Пакет: событие
Суперклассы: event.EventData
Данные о событиях для InstanceCreated и InstanceDestroyed события
Этот класс задает данные о событиях, которые передаются прослушивателям meta.class
InstanceCreated и InstanceDestroyed события.
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 object, который является источником событияmeta.classmeta.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 события. eventCallback статический метод использует персистентную переменную, чтобы сохранить количество экземпляров класса, которые существуют. 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 obj1Number of Instances: 1
Используйте meta.class события, чтобы наблюдать создание и разрушение объектов
Создайте класс с функцией обратного вызова для InstanceCreated и InstanceDestroyed события. eventCallback статический метод служит функцией обратного вызова для обоих событий. 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.