event.ClassInstanceEvent 类
命名空间: event
超类: event.EventData
InstanceCreated
和 InstanceDestroyed
事件的事件数据
描述
创建对象
在触发 InstanceCreated
或 InstanceDestroyed
事件时,MATLAB® 会创建一个 event.ClassInstanceEvent
对象。
属性
要创建或删除的对象。
属性:
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
数据类型: object
作为事件源的 matlab.metadata.Class
对象,以 matlab.metadata.Class
对象形式返回。
属性:
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
事件的名称,以 InstanceCreated
或 InstanceDestroyed
字符向量形式返回。
属性:
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
数据类型: char
示例
使用 matlab.metadata.Class
事件来对创建和销毁对象时的实例数量进行计数。
为 InstanceCreated
和 InstanceDestroyed
事件创建一个具有回调函数的类。eventCallback
静态方法使用持久变量来存储现有类的实例数。addEventListeners
方法将侦听程序添加到 CountInstances
类的 matlab.metadata.Class
对象。
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
为 CountInstances
类创建 matlab.metadata.Class
对象,并为 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
使用 matlab.metadata.Class
事件来观察对象的创建和销毁
为 InstanceCreated
和 InstanceDestroyed
事件创建一个具有回调函数的类。eventCallback
静态方法充当这两个事件的回调函数。addEventListeners
方法将侦听程序添加到 ClassInstanceEvent
类的 matlab.metadata.Class
对象。
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
为 CreateInstanceListeners
类创建 matlab.metadata.Class
对象,并为 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 会删除 matlab.metadata.Class
对象,因为它不再是该类的有效描述。在修改类后,您必须创建新的 matlab.metadata.Class
对象并向其中添加侦听程序。
版本历史记录
在 R2008a 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)