event.ClassInstanceEvent クラス
名前空間: event
スーパークラス: event.EventData
InstanceCreated
イベントと InstanceDestroyed
イベントのイベント データ
説明
このクラスは、matlab.metadata.Class
イベント、InstanceCreated
イベント、InstanceDestroyed
イベントのリスナーに渡されるイベント データを定義します。
event.ClassInstanceEvent
クラスは handle
クラスです。
クラスの属性
Sealed | true |
ConstructOnLoad | true |
HandleCompatible | true |
RestrictsSubclassing | true |
クラス属性の詳細については、クラスの属性を参照してください。
作成
MATLAB® は、InstanceCreated
または InstanceDestroyed
イベントをトリガーするときに、event.ClassInstanceEvent
オブジェクトを作成します。
プロパティ
Instance
— 作成または削除されているオブジェクト
オブジェクト
作成または削除されているオブジェクト
属性:
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
データ型: object
Source
— イベントのソースである matlab.metadata.Class
オブジェクト
matlab.metadata.Class
イベントのソースである matlab.metadata.Class
オブジェクト。matlab.metadata.Class
オブジェクトとして返されます。
属性:
GetAccess | public |
SetAccess | private |
GetObservable | true |
SetObservable | true |
EventName
— イベントの名前
文字ベクトル
イベントの名前。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.metadata.Class
オブジェクトはクラスの有効な説明ではなくなるため、MATLAB ではこのオブジェクトが削除されます。クラスを変更した後に、新しい matlab.metadata.Class
オブジェクトを作成して、リスナーを追加しなければなりません。
バージョン履歴
R2008a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)