Пакет: событие
Суперклассы: 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
событие.
Instance
- Объект создается или удаляетсяОбъект создается или удаляется.
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
Типы данных: object
Source
- объект meta.class, являющийся источником событияmeta.class
meta.class
объект, являющийся источником события, возвращенный как meta.class
объект.
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
Типы данных: meta.class
EventName
- Имя событияИмя события, возвращенное как вектор символов либо 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
объект и добавить к нему прослушиватели.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.