прослушиватель

Класс: указатель

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

Синтаксис

eL = listener(hSource,EventName,callback)
eL = listener(hSource,PropertyName,EventName,callback)

Описание

eL = listener(hSource,EventName,callback) создает прослушиватель для события под названием EventName. hSource является объектом указателя, который является источником события. callback является указателем на функцию, который вызывает MATLAB®, когда событие инициировано.

Если hSource является массивом объектов источника события, прослушиватель отвечает на именованное событие на любом объекте в массиве, который не находится в удаленном состоянии.

eL = listener(hSource,PropertyName,EventName,callback) создает прослушиватель для одного из предопределенных событий свойства. Существует четыре предопределенных события свойства:

EventNameСобытие имеет место
PreSet

Сразу, прежде чем значение свойства установлено, прежде, чем вызвать его метод доступа набора

PostSet

Сразу после того, как значение свойства установлено

PreGet

Сразу, прежде чем запрос значения свойства обслуживается, прежде, чем вызвать получать метод доступа

PostGet

Сразу после возврата значения свойства к запросу

Входные параметры

развернуть все

Объект указателя, который является источником события, заданного как отдельный объект или массив объектов.

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

Типы данных: char | string

Имя свойства, событие свойства которого инициировало прослушиватель, заданный как одно из этих значений:

  • Вектор символов или массив ячеек из символьных векторов, где каждый вектор символов является именем свойства, заданного для объектов в hSource

  • Скалярный объект meta.property или массив соответствия объектов meta.property свойствам заданы для объектов в hSource

Можно присоединить прослушиватели событий свойства динамических свойств только, когда hSource является скаляром. Если hSource является нескалярным, то свойства должны принадлежать классу hSource и не могут включать динамические свойства (которые не являются частью определения класса).

Класс, задающий исходное свойство, должен установить атрибуты свойства GetObservable и SetObservable позволять вам слушать события свойства.

Коллбэк прослушивателя, заданный как указатель на функцию

Типы данных: function_handle

Выходные аргументы

развернуть все

Объект прослушивателя, возвращенный как указатель на event.listener или объект event.proplistener.

Примеры

развернуть все

Создайте прослушиватель свойства для свойства Color графического окна figure.

fig = figure;
propListener = listener(fig,'Color','PostSet',@(src,evnt)disp('Color changed'));

Установите значение свойства Color к yellow. Установка свойства инициировала событие свойства PostSet на фигуре. Объект источника события является определенной фигурой, на которую ссылается указатель fig.

set(fig,'Color','yellow')

Удалите объект прослушивателя.

delete(propListener)

Советы

Жизненный цикл прослушивателя

Чтобы демонтировать прослушиватель, удалите объект прослушивателя, возвращенный listener. Например, этот оператор вызывает класс Handle метод handle.delete, чтобы демонтировать прослушиватель.

delete(el)

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

Метод listener не связывает жизненный цикл прослушивателя с объектом, который является источником события. Уничтожение объекта источника события не влияет на жизненный цикл объекта прослушивателя.

Необходимо явным образом уничтожить прослушиватели, созданные с методом listener независимо от исходного объекта. Вызов указателя удаляет метод на переменной прослушивателя (например, delete(el)) явным образом уничтожает прослушиватель. Переопределение или очищение переменной, содержащей прослушиватель, могут удалить прослушиватель, при отсутствии других ссылок на него. Чтобы связать жизненный цикл прослушивателя жизненного цикла объекта источника события, используйте handle.addlistener.

Альтернативы

Используйте addlistener когда это необходимо, MATLABto управляют жизненным циклом прослушивателя.

Введенный в R2017b