オブジェクトの削除

 

 

すべてのオブジェクトは、参照関係により維持されます。この概念はJavaScriptと同じです。何か別のオブジェクトから参照されているオブジェクトは、その参照関係が途絶えるまで維持されます。

 

"//"から始まるオブジェクトツリーは、親のオブジェクトが子のオブジェクトを参照しており、頂点となる"//"オブジェクトはBiz/Browserランタイムが参照しているため維持されています。

 

オブジェクトツリーに属さないオブジェクトも、参照関係により維持されます。通常、オブジェクトツリーに属さないオブジェクトはCRSプログラムの変数として参照されており、その変数がスコープから失われるまでの間維持されます。

 

削除方法

オブジェクトを削除するためには、すべての参照を切断する必要があります。

 

親子間の参照関係を切断するためには Deleteメソッドを使います。

 

//.Form1.Button1.Delete();

 

この例では、Form1とButton1の間の参照を切断します。

 

CRSプログラム変数による参照は、変数スコープの消失と同時に切断されるため、意識する必要はありません。以下の例で詳しく説明します。

 

Function OnTouch(e) {
    var csvobj = new CSVDocument;          // 1
    var session = getHttpSession();        // 2
    csvobj.Load(session.Get("test.csv"));  // 3
    Form1.Spread1.Row << csvobj;
}

 

1. 最初にCSVDocumentオブジェクトがのnewにより生成され、そのリファレンスがcsvobj変数に格納されます。

2. 次にgetHttpSession関数によりHttpSessionオブジェクトが戻され、そのリファレンスがsession変数に格納されます。

3. さらに、CSVDocument.Loadメソッドの引数として、HttpSession.Getメソッドが実行され、HttpResponseオブジェクトがLoadメソッドに渡されます。

 

以上によりここまでに、CSVDocument、HttpSession、HttpResponseに参照が行われました。これらオブジェクトの参照関係は次のようになります。

 

 

開放時の動作は以下のようになります。

1. CSVDocument.Loadメソッドの終了により、HttpResponseオブジェクトはどこからも参照されなくなり、削除されます。

2. OnTouchイベントハンドラの終了によりスコープから外れるcsvobjとsession変数が消去されます。

3. csvobj変数により参照されていたCSVDocumentオブジェクトはどこからも参照されなくなり、削除されます。

4. session変数により参照されていたHttpSessionオブジェクトは、まだBiz/Browser自体により参照されているため、削除されることなく維持されます。

 



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る