event.ClassInstanceEvent class

Пакет: событие
Суперклассы: event.EventData

Данные о событиях для InstanceCreated и InstanceDestroyed события

Описание

Этот класс определяет данные о событиях, которые передаются прослушивателям meta.class InstanceCreated и InstanceDestroyed события.

The event.ClassInstanceEvent класс является handle класс.

Атрибуты класса

Sealed
true
ConstructOnLoad
true
HandleCompatible
true
RestrictsSubclassing
true

Для получения информации об атрибутах класса см. раздел «Атрибуты класса».

Создание

MATLAB® создает event.ClassInstanceEvent объект при запуске InstanceCreated или InstanceDestroyed событие.

Свойства

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

Объект создается или удаляется.

Атрибуты:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

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

meta.class объект, являющийся источником события, возвращенный как meta.class объект.

Атрибуты:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

Типы данных: meta.class

Имя события, возвращенное как вектор символов либо InstanceCreated или InstanceDestroyed.

Атрибуты:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

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

Примеры

свернуть все

Использование meta.class события для подсчета количества образцов при создании и уничтожении объектов.

Создайте класс с функцией обратного вызова для InstanceCreated и InstanceDestroyed события. The eventCallback статический метод использует постоянную переменную, чтобы сохранить количество образцов существующего класса. The addEventListeners метод добавляет прослушивателей в meta.class объект для CountInstances класс.

classdef CountInstances
    methods (Static)
        function eventCallback(~,eventData)
            % Callback for InstanceCreated and InstanceDestroyed
            persistent instanceCount
            if ~isempty(instanceCount)
                switch eventData.EventName
                    case "InstanceCreated"
                        instanceCount = instanceCount + 1;
                    case "InstanceDestroyed"
                        if ~instanceCount == 0
                            instanceCount = instanceCount - 1;
                        end
                end
            else
                instanceCount = 1;
            end
            fprintf('%s %d \n',...
                'Number of Instances: ',instanceCount)
        end
        function addEventListeners(mc)
            % Add listeners
            addlistener(mc,"InstanceCreated",...
                @(src,evnt)CountInstances.eventCallback(src,evnt));
            addlistener(mc,"InstanceDestroyed",...
                @(src,evnt)CountInstances.eventCallback(src,evnt));
        end
    end
end

Создайте meta.class объект для CountInstances классы и добавление прослушивателей для InstanceCreated и InstanceDestroyed события. Этот пример использует один и тот же коллбэк для обоих событий.

mc = ?CountInstances;
CountInstances.addEventListeners(mc)

Всякий раз, когда вы создаете или уничтожаете объект CountInstances класс, событие вызывает обновление instanceCount постоянная переменная.

obj1 = CountInstances;
Number of Instances:  1
obj2 = CountInstances;
Number of Instances:  2 
clear obj1
Number of Instances:  1 

Использование meta.class события для наблюдения за созданием и уничтожением объектов

Создайте класс с функцией обратного вызова для InstanceCreated и InstanceDestroyed события. The eventCallback статический метод служит функцией обратного вызова для обоих событий. The addEventListeners метод добавляет прослушивателей в meta.class объект для ClassInstanceEvent класс.

classdef ClassInstanceListeners
    properties
        Prop
    end
    methods
        function obj = ClassInstanceListeners(p)
            obj.Prop = p;
        end
    end
    methods (Static)
        function eventCallback(~,eventData)
            % Callback for InstanceCreated and InstanceDestroyed
            I = eventData.Instance;
            S = eventData.Source;
            E = eventData.EventName;
            dashLine = sprintf('%s\n','--------------------');
            fprintf('%s',dashLine)
            fprintf('%s \n',['Class: ',class(I)])
            fprintf('%s %d \n',[S.PropertyList.Name ': '],I.Prop)
            fprintf('%s%s \n','Event: ', E)
            fprintf('%s',dashLine)
        end
        function addEventListeners(mc)
            % Add listeners
            addlistener(mc,"InstanceCreated",...
                @(src,evnt)ClassInstanceListeners.eventCallback(src,evnt));
            addlistener(mc,"InstanceDestroyed",...
                @(src,evnt)ClassInstanceListeners.eventCallback(src,evnt));
        end
    end
end

Создайте meta.class объект для CreateInstanceListeners классы и добавление прослушивателей для InstanceCreated и InstanceDestroyed события. Этот пример использует один и тот же коллбэк для обоих событий. Создайте образец CreateInstanceListeners Класс и присвоение идентификатор в свойство Prop.

mc = ?ClassInstanceListeners;
ClassInstanceListeners.addEventListeners(mc)
obj = ClassInstanceListeners(1334);
--------------------
Class: ClassInstanceListeners 
Prop:  1334 
Event: InstanceCreated 
--------------------

Построение другого образца, назначенного той же переменной, создает новый объект и уничтожает старый объект.

obj = ClassInstanceListeners(7335);
--------------------
Class: ClassInstanceListeners 
Prop:  7335 
Event: InstanceCreated 
--------------------
--------------------
Class: ClassInstanceListeners 
Prop:  1334 
Event: InstanceDestroyed 
--------------------

Если вы изменяете определение класса, MATLAB удаляет meta.class объект, поскольку он больше не является допустимым описанием класса. После изменения класса необходимо создать новое meta.class объект и добавить к нему прослушиватели.

См. также

|

Введенный в R2008a
Для просмотра документации необходимо авторизоваться на сайте