Только начинаю разработку 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
требуется завершающее двоеточие, а для другого - нет? Каковы правила, которым я должен следовать, когда он должен быть включен, а когда должен быть отключен, и почему я не могу всегда использовать одно или другое?
Спасибо!