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