主要内容

事件。ClassInstanceEvent类

包:事件
超类:事件。EventData

事件数据InstanceCreatedInstanceDestroyed事件

描述

类定义传递给监听器的事件数据meta.classInstanceCreatedInstanceDestroyed事件。

事件。ClassInstanceEvent类是一个处理类。

类属性

密封
真正的
ConstructOnLoad
真正的
HandleCompatible
真正的
RestrictsSubclassing
真正的

有关类属性的信息,请参见类属性

创建

MATLAB®创建一个事件。ClassInstanceEvent对象时触发InstanceCreatedInstanceDestroyed事件。

属性

全部展开

正在创建或删除的对象。

属性:

GetAccess
公共
SetAccess
私人
GetObservable
真正的
SetObservable
真正的

数据类型:对象

meta.class对象,该对象是事件的源,返回为meta.class对象。

属性:

GetAccess
公共
SetAccess
私人
GetObservable
真正的
SetObservable
真正的

数据类型:meta.class

事件的名称,作为字符向量返回InstanceCreatedInstanceDestroyed

属性:

GetAccess
公共
SetAccess
私人
GetObservable
真正的
SetObservable
真正的

数据类型:字符

例子

全部折叠

使用meta.class在创建和销毁对象时计算实例数量的事件。

类的回调函数创建一个类InstanceCreatedInstanceDestroyed事件。的eventCallback静态方法使用持久变量来存储存在的类实例的数量。的addeventlistener方法将侦听器添加到meta.class对象的CountInstances类。

classdefCountInstances方法(静态)函数eventData eventCallback (~)%回调实例创建和实例销毁持续的instanceCount如果~ isempty (instanceCount)开关eventData。EventName情况下“InstanceCreated”instanceCount = instanceCount + 1;情况下“InstanceDestroyed”如果~instanceCount == 0 instanceCount = instanceCount - 1;结束结束其他的instanceCount = 1;结束流(“% s % d \ n”...'实例数:'instanceCount)结束函数addeventlistener (mc)%添加监听器addlistener (mc,“InstanceCreated”...@ (src evnt) CountInstances.eventCallback (src, evnt));addlistener (mc,“InstanceDestroyed”...@ (src evnt) CountInstances.eventCallback (src, evnt));结束结束结束

创建一个meta.class对象的CountInstances类并为InstanceCreatedInstanceDestroyed事件。这个例子为两个事件使用了相同的回调。

mc = ? CountInstances;CountInstances.addEventListeners (mc)

当你创建或销毁一个对象CountInstances类时,该事件导致对instanceCount持续的变量。

其中obj1 = CountInstances;
实例数:1
methoda = CountInstances;
实例数:2
清晰的其中obj1
实例数:1

使用meta.class事件来观察对象的创建和销毁

类的回调函数创建一个类InstanceCreatedInstanceDestroyed事件。的eventCallback静态方法充当这两个事件的回调函数。的addeventlistener方法将侦听器添加到meta.class对象的ClassInstanceEvent类。

classdefClassInstanceListeners属性道具结束方法函数obj = ClassInstanceListeners(p)支持= p;结束结束方法(静态)函数eventData eventCallback (~)%回调实例创建和实例销毁我= eventData.Instance;S = eventData.Source;E = eventData.EventName;虚线= sprintf (“% s \ n”'--------------------');流(' % s '虚线)流(“% s \ n”,[”类,“类(I)])流(“% s % d \ n”, (S.PropertyList.Name“:”), I.Prop)流(“% s % s \ n””事件,“, E)流(' % s '虚线)结束函数addeventlistener (mc)%添加监听器addlistener (mc,“InstanceCreated”...@ (src evnt) ClassInstanceListeners.eventCallback (src, evnt));addlistener (mc,“InstanceDestroyed”...@ (src evnt) ClassInstanceListeners.eventCallback (src, evnt));结束结束结束

创建一个meta.class对象的CreateInstanceListeners类并为InstanceCreatedInstanceDestroyed事件。这个例子为两个事件使用了相同的回调。的实例CreateInstanceListeners类并将标识符分配给属性道具

mc = ? ClassInstanceListeners;obj = ClassInstanceListeners(1334);
-------------------- 类:ClassInstanceListeners道具:1334事件:InstanceCreated  --------------------

构造另一个赋值给相同变量的实例将创建一个新对象并销毁旧对象。

obj = ClassInstanceListeners (7335);
-------------------- 类:ClassInstanceListeners道具:7335事件:InstanceCreated  -------------------- -------------------- 类:ClassInstanceListeners道具:1334事件:InstanceDestroyed  --------------------

如果修改类定义,MATLAB会删除meta.class对象,因为它不再是类的有效描述。修改类之后,必须创建一个新的meta.class对象,并向其添加侦听器。

另请参阅

|

主题

介绍了R2008a