メソッドを使ってみよう

次はメソッドを使ってみます。
ボタンなどのクラスではメソッドはあまり使いません。
メソッドももちろん存在します。

メソッドを呼ぶ

メソッドは「呼ぶ」と表現します。
メソッドの呼び方は、ほとんど命令と同じです。
プロパティのように、前に「オブジェクト名.」をつければいいだけです。
メソッド呼び出し
1
2
Btn = CButton.Create;
Btn.SetRect(10,10,100,100); //メソッド
このようにします。
メソッドは、命令同様引数を取ることも出来ます。
上の例で使用している「SetRect」は、オブジェクトをそれぞれX座標、Y座標、幅、高さの順に設定します。
以下の例と同じ意味です。
プロパティで
1
2
3
4
5
6
Btn = CButton.Create;

Btn.Left = 10; //X座標
Btn.Top  = 10; //Y座標
Btn.Width = 100; //幅
Btn.Height= 100; //高さ
詳しいことは「クラスリファレンス」に書いてあります。
先ほども書いたように、使い方は命令とほぼ同じです。
プロパティのように、メソッド名の前に「オブジェクト名.」をつけます。

特殊なメソッド"Free"

SpinelでのすべてのクラスはCObjectを継承しています。
CObjectが持つ特殊なメソッド「Free」について説明します。

Freeメソッドは、そのオブジェクトを解放するという働きをします。
クラスは、インスタンス化した際にメモリを確保します。この確保したメモリは、
変数と違い、放っておいても解放されないため、どんどん消費されていきます。
これがメモリーリークというもので、発見が大変難しいバグになります。

生成されたインスタンスを解放するメソッド、それが「Free」です。
Freeメソッドを呼ぶことで、そのインスタンスを解放できます。

Freeメソッド
1
2
Btn = CButton.Create;
Btn.Free; //解放
これを実行しても何も表示されません。
Btnが生成された後すぐにFreeで解放されてしまうからです。

...ですが、今まではFreeメソッドなんか使わずにやってきました。
どうしてこんな無駄なことをするのかと思うかもしれませんが、
実は、Spinelが実行終了時に自動で全オブジェクトのFreeメソッドを呼び出しているからです。
ですから、いままで特に意識しなくてもメモリの解放は行われていたのです。

ボタンのように、終了時まで残っているオブジェクトならFreeを呼ばなくてもいいですが、
一時的に作成し、すぐに用がなくなるようなオブジェクトは、いらなくなった時点でFreeを呼び出してください。
前へ / index / 次へ
プログラム言語「Spinel
Copyright © 2005 - Giemsa All Rights Reserved.
NOTES Software.