Когда использовать двоеточие с @selector

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

Спасибо!

12
задан Rishil Patel 26 January 2019 в 00:35
поделиться