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