Из NSNotificationCenter
Документ :
notificationSelector
Селектор, который указывает сообщение, которое получатель отправляет messagesObserver , чтобы уведомить его о публикации уведомления. Метод, указанный в messagesSelector , должен иметь один и только один аргумент (экземпляр NSNotification
).
[Акцент мой.]
Вы должны предоставить селектору правильную подпись; если вы этого не сделаете, это может сработать, но может перестать работать только тогда, когда вы этого не хотите.
Причина, по которой вы можете захотеть получить уведомление, заключается в том, что вы можете передавать информацию в форме словаря userInfo
, который вы можете указать, когда вы сами публикуете уведомление, используя notificationWithName:object:userInfo:
. Вы можете игнорировать аргумент при вызове метода, но параметр должен присутствовать в сигнатуре метода.
Что касается кнопок и их действий, документы говорят, что вы можете иметь одну из трех подписей *:
фреймворк UIKit допускает три различных формы селектора действий:
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
Возвращаемый тип IBAction
эквивалентен void
(возвращаемое значение отсутствует), за исключением того, что его присутствие в методе в вашем заголовке позволяет Интерфейсному Разработчику знать, что метод предназначен как действие, так что вы можно подключить элементы управления.
Причины желания получить кнопку (или другой элемент управления) аналогичны причинам уведомлений. Если в вашем интерфейсе много кнопок, некоторые из которых (например, в виде таблицы) подключены к одному и тому же действию, вам может потребоваться отличить точные действия по идентификатору нажатой кнопки.
*: Для полноты картины хочу отметить, что это , а не случай на Mac; там метод действия должен иметь форму: - (IBAction)action:(id)sender
.