Действие Target
Действие Target является шаблоном разработки, в котором объект содержит информацию, необходимую для отправки сообщения в другой объект, когда событие имеет место. Хранившая информация состоит из двух элементов данных: селектор действия, идентифицирующий метод, который будет вызван, и цель, которая является объектом получить сообщение. Сообщение, отправленное, когда событие имеет место, вызывают сообщением действия. Несмотря на то, что цель может быть любым объектом, даже объект платформы, это обычно - пользовательский контроллер, обрабатывающий сообщение действия специализированным способом.
Событие, инициировавшее сообщение действия, может быть чем-либо, как объект, отправляющий сообщение, может быть любым объектом. Например, объект устройства распознавания жеста мог бы отправить сообщение действия в другой объект, когда это распознает свой жест. Однако парадигма целевого действия обычно найдена со средствами управления, такими как кнопки и ползунки. Когда пользователь управляет объектом управления, он отправляет сообщение в указанный объект. Объект управления является экземпляром подкласса NSControl
(AppKit) или UIControl
(UIKit). И селектор действия и целевой объект являются свойствами объекта управления или, в платформе AppKit, свойствах объекта ячейки управления.
Метод действия должен иметь определенную форму
Методы действия должны иметь стандартную подпись. Платформа UIKit разрешает некоторое изменение подписи, но обе платформы принимают методы действия с подписью, подобной следующему:
- (IBAction)doSomething:(id)sender; |
Спецификатор типа IBAction
, который используется вместо void
возвратите тип, отмечает заявленный метод как действие так, чтобы Интерфейсный Разработчик знал о нем в целях соединения. Для метода действия появиться в Интерфейсном Разработчике, сначала необходимо объявить его в заголовочном файле класса, экземпляр которого должен получить сообщение действия.
sender
параметр является объектом управления, отправляющим сообщение действия. При ответе на сообщение действия можно запросить sender
получить больше информации о контексте события, инициировавшего сообщение действия.
Можно поставить цель и действие в коде или Используя инструменты
Можно установить действие и цель управления (или ячейка) объект программно или в Интерфейсном Разработчике. Установка этих свойств эффективно соединяет управление и его цель через действие. При соединении управления и его цели в Интерфейсном разработчике соединение архивируется в файле пера. Когда приложение более поздние загрузки файл пера, восстанавливается соединение.
Можно поставить цель сообщения действия к nil
. В этом случае приложение определяет цель во время выполнения; это отправляет сообщение действия сначала первому респонденту, и оттуда это восстанавливает работоспособность цепочка респондента, пока это не обрабатывается (если вообще).
Действие Target Отличается в iOS и OS X
Несмотря на то, что концептуально шаблон разработки целевого действия является тем же для обеих платформ, AppKit и платформы UIKit реализуют его по-другому:
AppKit использует архитектуру ячейки управления для реализации целевого действия для большинства (но не все) средства управления. В этой архитектуре управлению «принадлежат» один или несколько объектов ячейки более легкого веса, и ячейка содержит цель и свойства действия для его управления. Когда пользователь щелкает или иначе активирует управление, оно извлекает эту информацию из своей ячейки и отправляет сообщение действия.
В UIKit управление отображает цель и действие к одному или более мультисенсорным событиям, которые могут произойти на управлении.
UIKit позволяет несколько различных подписей для методов действия. Например, следующая подпись допустима:
- (IBAction)action:(id)sender forEvent:(UIEvent *)event