Пакет: событие
Суперклассы: 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.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
события. 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 obj1
Number 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.