Обзор событий и прослушивателей

Зачем использовать события и прослушиватели

События являются уведомлениями, которые объекты транслируют в ответ на то, что происходит, например, изменение значения свойства или взаимодействие пользователя с прикладной программой. Прослушиватели выполняют функции, когда уведомляют, что происходит событие интереса. Используйте события для передачи изменений объектам. Прослушиватели отвечают, выполняя функцию обратного вызова.

Для получения дополнительной информации смотрите Событие и Концепции прослушивателя.

Основы событий и прослушивателей

При использовании событий и прослушивателей:

  • Только handle классы могут определять события и прослушиватели.

  • Задайте имена событий в events блок определения класса (События и синтаксис прослушивателей).

  • Используйте атрибуты события, чтобы задать доступ к событию (Атрибуты События).

  • Вызовите указатель notify метод для запуска события. Уведомление о событии транслирует названное событие всем прослушивателям, зарегистрированным для этого события.

  • Используйте указатель addlistener метод для соединения прослушивателя с исходным объектом события. MATLAB® уничтожает прослушиватель, когда источник события уничтожен.

  • Используйте указатель listener метод создания прослушивателей, которые не связаны с жизненным циклом исходного объекта события. Этот подход полезен, когда источник событий и прослушиватели определены в различных компонентах, которые вы хотите иметь возможность добавлять, удалять или изменять независимо. Ваш код приложения управляет жизненным циклом объекта прослушивателя.

  • Функции обратного вызова прослушивателя должны задавать как минимум два входных параметров - указатель на исходный объект события и данные о событиях (для получения дополнительной информации см. Синтаксис коллбэка прослушивателя).

  • Измените данные, переданные каждому коллбэку прослушивателя, подклассифицировав event.EventData класс.

Предопределенные события

MATLAB Определяет события для прослушивания наборов свойств и запросов. Для получения дополнительной информации смотрите Прослушивание изменений значений свойств.

Все указатели объектов задать событие с именем ObjectBeingDestroyed. MATLAB инициирует это событие перед вызовом деструктора классов.

Синтаксис события

Задайте имя события в events блок кода:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
end

Для примера, MyClass задает событие с именем StateChange:

classdef MyClass < handle
   events
      StateChange
   end
end

Инициируйте событие с помощью handle классы notify метод:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
   methods
      function anyMethod(obj)
         ...
         notify(obj,'EventName');
      end
   end
end

Любая функция или метод могут инициировать событие для определенного образца класса, определяющего событие. Для примера, triggerEvent вызывается метод notify чтобы вызвать StateChange событие:

classdef MyClass < handle
   events
      StateChange
   end
   methods
      function triggerEvent(obj)
         notify(obj,'StateChange')
      end
   end
end

Срабатывание StateChange событие со triggerEvent метод:

obj = MyClass;
obj.triggerEvent

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

Создание прослушивателя

Определите прослушиватель, используя handle классы addlistenerили listener способ. Передайте указатель на функцию для функции обратного вызова прослушивателя, используя один из следующих синтаксисов:

  • addlistener (SourceOfEvent, 'EventName', functionName) - для обычной функции.

  • addlistener (SourceOfEvent, 'EventName', Obj.methodName) - для способа Obj.

  • addlistener (SourceOfEvent, 'EventName', ClassName.methodName) - для статического метода класса ClassName.

ListenerObject = addlistener(SourceOfEvent,'EventName',@listenerCallback);

addlistener возвращает объект прослушивателя. Входные параметры:

  • SourceOfEvent - объект класса, который задает событие. Событие срабатывает на этом объекте.

  • EventName - имя события, заданное в классе events кодовый блок.

  • listenerCallback - указатель на функцию, ссылающийся на функцию, которая выполняется в ответ на событие.

Для примера создайте объект прослушивателя для StateChange событие:

function lh = createListener(src)
   lh = addlistener(src,'StateChange',@handleStateChange)
end

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

function handleStateChange(src,eventData)
   % src - handle to object that triggered the event
   % eventData - event.EventData object containing 
   %             information about the event.   
   ...
end

Дополнительные сведения см. в разделе Синтаксис коллбэке прослушивателе.

См. также

|

Похожие темы