listener

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

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

Синтаксис

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) создает прослушиватель для одного из предопределенных событий свойства. Существует четыре предопределенных события свойств:

Имя событияСобытие происходит
PreSet

Непосредственно перед установкой значения свойства, перед вызовом его метода доступа к набору

PostSet

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

PreGet

Непосредственно перед обслуживанием запроса значения свойства, перед вызовом его метода get access

PostGet

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

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

расширить все

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

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

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

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

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

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

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

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

Класс, определяющий свойство source, должен задать 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 delete метод для удаления прослушивателя.

delete(el)

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

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

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

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

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

Введенный в R2017b