Просто приступаю к разработке для iPhone и Objective-C
.
Вчера я пытался добавить Observer для уведомления в моем представлении, и я продолжал получать эту ошибку:
unrecognized selector sent to instance
Я отследил это до того факта, что мне нужно было добавить конечную двоеточие к аргументу селектора:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(nameOfMySelector:) name:@"BBLocationServicesAreDisabled" object:nil];
Сегодня я подумал, что был умен, потому что при настройке аргумента действия для кнопки я вспомнилмоя ошибка вчера, и добавил двоеточие к аргументу действия.Аргумент действия принимает @selector
, так же, как аргумент селектора при настройке наблюдателя для NSNotification
, поэтому я решил, что поступаю правильно.
Однако со следующим кодом:
[self.callToActionButton addTarget:self action:@selector(nameOfMySelector:) forControlEvents:UIControlEventTouchUpInside];
Я получаю точно такую же ошибку:
unrecognized selector sent to instance
Что дает?Почему один @selector
требует в конце двоеточия, а другой нет?Каким правилам я должен следовать, когда он должен быть включен, и когда он должен быть остановлен, и почему я не могу всегда делать одно или другое?
Спасибо!