|
こんにちは
オブジェクト変数は、オブジェクトの参照を記憶するものですよね。
set オブジェクト変数=Nothing
というのは、オブジェクト変数にNothingオブジェクトへの参照を記憶する
ということです。
これによって、元のオブジェクトへの参照がこのオブジェクト変数に関しては
なくなります。
オブジェクトのインスタンス(実体)は、どこからも参照されなくなったときに
解放されます。
したがって、もともとオブジェクトを参照していた変数が、このオブジェクト変数だけだったら、Nothingを参照することで元のオブジェクトへの参照がなくなるので、この時点でオブジェクトのインスタンスも解放されます。
通常は、プロシージャレベルの変数なら、プロシージャを抜けた時点で参照が解除されるので、Nothingへの参照をsetする必要はありません。
でも、オブジェクトへの参照が複雑になってくると、
たとえば、オブジェクトが、自分自身への参照を持っている場合、そのオブジェクトへの参照をなくしても、自分自身で参照しているためにインスタンスは解放されず、
しかもプロシージャからはそのオブジェクトを参照できない、幽霊オブジェクトが残ってしまうことになります。
なので、参照の仕組みがよく分からないようなときは、不要になった時点でNothingをsetしておくのが安全です。
幽霊オブジェクトが残ると動作が不安定になったりしますので、そうなってから片っ端からNothingをつけてまわるのも一案ですが、マウスが利かなくなったり、することもありますので、こまめに指定するほうがいいと思いますよ。
|
|