Используйте event.hasListener для определения наличия прослушивателей в конкретном событии. event.hasListener принимает массив объектов источника события и имя события в качестве входных аргументов. Он возвращает массив логических значений, указывающих, существуют ли прослушиватели для указанного события для каждого объекта в массиве.
Примечание
При вызове, event.hasListener должен иметь NotifyAccess для мероприятия. То есть звонить event.hasListener в контексте, в котором можно вызвать notify для рассматриваемого события.
Использовать event.hasListener чтобы избежать отправки уведомлений о событиях, когда нет прослушивателей для события. Например, если создание пользовательских данных событий требует значительных ресурсов или события запускаются повторно, используйте event.hasListener для проверки прослушивателей перед выполнением этих шагов.
Создание условий для создания данных о событиях и вызова 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')Дополнительные сведения об определении класса гетерогенных массивов см. в разделе Проектирование иерархий гетерогенных классов.