Основной цикл событий

В основном цикле событий приложение постоянно направляет входящие события к объектам для обработки и, в результате той обработки, обновляет ее появление и состояние. Цикл событий является просто циклом выполнения: цикл обработки событий для планирования работы и координирования получения событий из различных входных источников, присоединенных к циклу выполнения. Каждый поток имеет доступ к циклу выполнения. Во всех кроме основного потока цикл выполнения должен быть сконфигурирован и выполнен вручную Вашим кодом. В приложениях Какао цикл выполнения для основного потока — основного цикла событий — выполняется автоматически объектом приложения. Что различает, основной цикл событий - то, что его основной входной источник получает события от операционной системы, сгенерированные пользовательскими действиями — например, щелкнув по представлению или введя текст с помощью клавиатуры.

Art/main_event_loop_OSX.jpg

Объект приложения получает и диспетчеризирует события

Сразу после того, как приложение запускается, оно устанавливает инфраструктуру для основного цикла событий. Это устанавливает соединение с теми, которые лежат в основе системных компонентов, которые ответственны за поставку низкоуровневых пользовательских событий. Приложение получает эти события через входной источник, установленный в цикле выполнения основного потока. Поскольку приложение должно обработать каждое событие отдельно, в порядке его поступления, эти низкоуровневые события помещаются в очередь событий метода «первым пришел - первым вышел».

Как только интерфейс исходного пользователя находится на экране, приложение после того управляется внешними событиями. Объект приложения получает верхний объект в конечном счете очередь, преобразовывает его в объект-событие (UIEvent на iOS, NSEvent на OS X), и отгрузки это к другим объектам в приложении для обработки. Когда вызов, диспетчеризировавший возвраты события, приложение, выбирает следующий объект в очереди и диспетчеризирует его. Это продолжает делать это, пока не завершается приложение.

Базовые объекты реагируют на события и рисуют пользовательский интерфейс

Когда приложение запускается, оно также устанавливает ключевую группу объектов, которые ответственны за рисование пользовательского интерфейса и обработку событий. Эти базовые объекты включают окна и различные виды представлений. Когда объект приложения получает событие от очереди событий, он диспетчеризирует его окну, в котором произошло пользовательское событие. Окно отправляет событие в представление, которое является самым надлежащим обработчиком для него:

  • Для мультисенсорных и событий от нажатия мыши представление является тем от касания или указателя мыши.

  • Для клавиатуры, движения и других событий, представление является первым респондентом.

Если это начальное представление не обрабатывает событие, оно может передать его другим представлениям в приложении через цепочку респондента.

В обработке события представление часто инициирует ряд действий, изменяющих появление приложения и обновляющих состояние и данные приложения. Когда эти действия были завершены, управление возвращается к приложению, выбирающему следующее событие от очереди событий.

Необходимые как условие статьи

Категорическое обсуждение

Проекты примера кода

    (Ни один)