クラスmyClass < handle
があるとします。 Mathworks Help page on clear
からMATLAB - 'clear'を使用するときにオブジェクトデストラクタを実行しますか?
ハンドルグラフィックスハンドルを消去してもオブジェクト自体は削除されず、オブジェクトを削除してもハンドルを格納する変数は削除されません。 I最初に明示的
delete
それを...私は適切なクリーンアップを行うと、それにはいくつかの参照を削除する
myClass
のデストラクタを指定しない限り
hf = figure; % Creates figure object, stores handle in variable hf
delete(hf) % Removes figure object, but not the variable hf
clear hf % Removes hf from the workspace; figure could still exist
のでclear
ハンドルオブジェクトをすると、メモリから削除されません。このデストラクタはclear
に呼び出されません。オブジェクトがクリアされたときにそのデストラクタを呼び出すことは可能ですか?
編集:私はmyClass
オブジェクトへの参照がない場合delete
が自動的にclear
と呼ばれている間、私は別のクラスを持って、myClass
を参照してくださいプロパティでmyOtherClass
を言うことを言及する必要があり、myOtherClass.a
を言います。 myOtherClass
には、myClass
のプロパティではないプロパティがありますが、myOtherClass.a
も空の場合は空白にする必要があります。それが理にかなっていないかどうかを教えてください。
残念なことに、残りのオブジェクトには他の参照があります。この機能が欲しい理由の一部は、私のデストラクタでこれらの参照を取り除くためです。関連情報をOPに更新しました。完全な文脈がなければ理にかなっていないかもしれませんが、完全な文脈は特に質問には関係しません。 –
私は特にカスタムGUI要素を作成するときに同様の問題を抱えています。変数をクリアするときにデストラクタを強制的に呼び出すことはできないと私は考えています。あなたの質問に注意してください、あなたはそれをクリアする前にオブジェクトのdeleteメソッドを単に呼び出すことができます。 – hoogamaphone
ちょっと参考までに、オブジェクト指向のコード(これは主に私が見つかったことです)を持つguiを使用しているときに、デストラクタがクリアで呼び出されないという機能が端末で使用されていると思います。つまり、ユーザーが「クリア」を偶然使用した場合、guiへのハンドルがワークスペースから消去されても、GUIはシャットダウンしません。しかし、ユーザがハンドルに対して 'delete'を呼び出すと、デストラクタは引き続き実行されます。 – Justin