Используйте event.hasListener функция, чтобы определить, имеет ли определенное событие прослушиватели. event.hasListener принимает массив объектов источника события и имени события как входные параметры. Это возвращает массив логических значений, указывающих, существуют ли прослушиватели для заданного события на каждом объекте в массиве.
Когда названо, event.hasListener должен иметь NotifyAccess для события. Таким образом, вызовите event.hasListener в контексте, в котором можно вызвать notify для рассматриваемого события.
Используйте event.hasListener постараться не отправлять уведомления о событии, когда нет никаких прослушивателей для события. Например, если создание пользовательских данных о событиях использует значительные ресурсы, или если события неоднократно инициированы, используйте event.hasListener протестировать на прослушиватели прежде, чем выполнить эти шаги.
Conditionalize создание данных о событиях и вызова notify использование event.hasListener. Для объектного массива a, определите, существуют ли прослушиватели прежде, чем создать данные о событиях и инициировать событие:
if any(event.hasListener(a,'NameOfEvent')) evt = MyCustomEventData(...); notify(a,'NameOfEvent',evt) end
Триггерные события, выборочно использующие логическую индексацию со значениями, возвращенными event.hasListener. Отправьте уведомления о событии только за элементами массива, которые имеют прослушиватели:
ind = event.hasListeners(a,'NameOfEvent'); notify(a(ind),'NameOfEvent',evt)
Если массив входного объекта неоднороден, класс массива должен задать заданное событие. Можно запросить прослушиватели только для событий, которые задают все объекты в массиве.
Например, в следующей схеме, классе разнородного массива, сформированного с объектами классов SpecificA, SpecificB, и SpecificC RootSuperclass. Поэтому event.hasListener может найти прослушиватели только для RootEvent событие, потому что это - единственное событие, характерное для всех элементов массива.

Создайте разнородный массив с тремя самыми определенными классами:
het = [SpecificA,SpecificB,SpecificC]; class(het)
ans RootSuperclass
events(het)
Events for class RootSuperclass RootEvent
event.hasListener не может определить, существуют ли прослушиватели для событий, которые заданы некоторыми, но не всеми объектами в массиве:
event.hasListener(het,'ClassAEvent')Error using event.hasListener
Event 'ClassAEvent' is not defined for class 'RootSuperclass'.
Определите, задали ли отдельным объектам в разнородном массиве прослушиватели для их определенных событий путем индексации в массив:
event.hasListener(het(1),'ClassAEvent')Для получения дополнительной информации об определении класса разнородных массивов, смотрите Проектирующие Неоднородные Иерархии классов.