2016-03-22 2 views
0

В простой подкласс UIViewController Я просто реализовал селектор в качестве обратного вызова для обновления пользовательского интерфейсаrespondsToSelector не может распознать реализованный селектор

-(void)afterfollowAction:(id)object{ 
    //blabla 
} 

, но в конце концов я нашел respondsToSelector не может распознать его. Код испытания:

SEL callback = @selector(afterFollowAction:); 
BOOL test1 = [self respondsToSelector:callback]; //NO 
BOOL test2 = [self respondsToSelector:@selector(afterFollowAction:)]; //NO 
BOOL test3 = [[self class] instanceMethodForSelector: @selector(afterFollowAction:)]; //YES 
BOOL test4 = [self respondsToSelector:@selector(viewWillDisappear:)]; //YES 
[self performSelector:callback withObject:nil]; //crash 

test2 показывает не проблему локальной переменной CallBack, в

test4 показывает, что он знает, что это UIViewController и сам не ноль

test3 показывает на самом деле он знает, что селектор выполнен

но если вы вызываете его с «performSelector» это выбросить исключение «непризнанный селектор»

Я искал веб И я не делал ошибок с «:» или ноль;

Я помещаю объявление селектора в файл заголовка, но не использует его.

Я перезапустил Mac и iPhone, но это тот же результат.

Это простой класс, в котором я не повторно реализую responsesToSelector: селектор.

Итак, я неправильно использовал ответы на запрос? Я просто хочу сделать обратный вызов вне этого класса.

Окружающая среда: Mac OS X 10.11.3, Xcode 7.2.1, IOS 9.2.1

Update: найти (Cmd + F) без учета регистра скрыть F/F вопрос. Спасибо Киран!

+0

вы добавили объявление функции в файле .h, а также ли? –

+2

F находится в столице –

ответ

1

Это должно быть

SEL callback = @selector(afterfollowAction:); 
BOOL test1 = [self respondsToSelector:callback]; //NO 
BOOL test2 = [self respondsToSelector:@selector(afterfollowAction:)]; //NO 
BOOL test3 = [[self class] instanceMethodForSelector: @selector(afterfollowAction:)]; //YES 
BOOL test4 = [self respondsToSelector:@selector(viewWillDisappear:)]; //YES 
[self performSelector:callback withObject:nil]; //crash 

Вы используете капитал «F»

+0

Большое спасибо! и Fxxk сам! Когда я записал этот вопрос, я даже хотел подчеркнуть, что я использовал copy/paste и cmd + F для проверки! Наконец, моя глупость! – bluekurk

+1

использовать cmd + f с чувствительностью к регистру :) –

Смежные вопросы