Вообще говоря, причины для получения событий можно разделить на четыре категории.
Это неофициальные, но придуманные мною категории. Зачастую оказывается не совсем ясно, к какой именно категории следует отнести конкретное событие. Более того, событие может подпасть сразу под две категории. Тем не менее этими категориями удобно пользоваться, чтобы наглядно представить, как и почему среда Cocoa взаимодействует с прикладным кодом. Ниже показано, каким образом события разделяются по этим четырем категориям.
Пользовательские события
Пользователь выполняет какую-нибудь операцию в диалоговом режиме, а событие инициируется непосредственно. Очевидными тому примерами служат события, получаемые, когда пользователь касается или проводит пальцем по экрану или же нажимает клавишу.
События времени действия
Это события, уведомляющие о наступлении определенной стадии во время действия приложения, например, когда приложение запускается на выполнение, готово перейти в фоновый режим работы или только что загруженный его компонент (например, представление типа UlViewController) должен быть удален с экрана.
Функциональные события
Такие события наступают в том случае, если в среде Cocoa предполагается сделать что-нибудь, а прикладному коду требуется предоставить дополнительные функциональные возможности, и тогда она обращается к нему. К этой категории относятся события, связанные с воспроизведением представления типа UlView с помощью метода drawRect: или надписи на метке типа UILabel с помощью метода drawTextlnRect:, как было показано в главе 10.
Запросные события
Такие события наступают в том случае, если среде Cocoa требуется обратиться с запросом к прикладному коду. В этом случае ее поведение зависит от получаемого ответа. Например, порядок появления данных в таблице (типа UITableView) таков, что всякий раз, когда среде Cocoa требуется ячейка таблицы, она запрашивает ее у прикладного кода.