Я был несколько дней назад из Objective-C, чтобы написать язык Swift, в проекте я столкнулся с проблемой. Эта проблема заключается в использовании функции responsesToSelector ("testEnum:"), чтобы проверить, следует ли реализовать функцию testEnum: , если параметр имеет значение, он вернет false, я попробовал другие типы, он вернет true, не знаю, в чем причина, см. следующий код, чтобы помочь мне решить его, большое спасибо!Почему delegate.respondsToSelector (Selector ("testEnum:")), этот код вернет false на языке быстрого доступа?
enum TestEnum {
case A
case B
case C
}
protocol TestAProtocol: NSObjectProtocol {
func testEnum(testEnum: TestEnum);
func testInt(testInt: Int);
}
class TestA: NSObject {
var delegate: TestAProtocol?;
func executeDelegateCallBack() {
if (delegate != nil && delegate!.respondsToSelector(Selector("testEnum:"))) { // delegate!.respondsToSelector(Selector("testEnum:")) return false ?
delegate?.testEnum(TestEnum.A);
}
if (delegate != nil && delegate!.respondsToSelector(Selector("testInt:"))) { // delegate!.respondsToSelector(Selector("testInt:")) return true ?
delegate?.testInt(0);
}
}
}
class TestB: NSObject, TestAProtocol {
func initTestB() {
let testA: TestA = TestA();
testA.delegate = self;
testA.executeDelegateCallBack();
}
// mark TestAProtocol
func testInt(testInt: Int) {
}
func testEnum(testEnum: TestEnum) {
}
}
Его не ответ на ваш вопрос, но ваш || должен быть && - Вы хотите, чтобы делегат был не ноль и отвечал на селектор – Paulw11
Ну, я пишу тестовый пример, не слишком много внимания, спасибо, я его изменяю! –