次はメソッドを使ってみます。
ボタンなどのクラスではメソッドはあまり使いません。
メソッドももちろん存在します。
メソッドを使ってみよう
次はメソッドを使ってみます。
ボタンなどのクラスではメソッドはあまり使いません。 メソッドももちろん存在します。 メソッドを呼ぶ
メソッドは「呼ぶ」と表現します。
メソッドの呼び方は、ほとんど命令と同じです。 プロパティのように、前に「オブジェクト名.」をつければいいだけです。
このようにします。
メソッドは、命令同様引数を取ることも出来ます。 上の例で使用している「SetRect」は、オブジェクトをそれぞれX座標、Y座標、幅、高さの順に設定します。 以下の例と同じ意味です。
特殊なメソッド"Free"
SpinelでのすべてのクラスはCObjectを継承しています。 CObjectが持つ特殊なメソッド「Free」について説明します。
Freeメソッドは、そのオブジェクトを解放するという働きをします。 クラスは、インスタンス化した際にメモリを確保します。この確保したメモリは、 変数と違い、放っておいても解放されないため、どんどん消費されていきます。 これがメモリーリークというもので、発見が大変難しいバグになります。
生成されたインスタンスを解放するメソッド、それが「Free」です。 Freeメソッドを呼ぶことで、そのインスタンスを解放できます。
これを実行しても何も表示されません。 Btnが生成された後すぐにFreeで解放されてしまうからです。
...ですが、今まではFreeメソッドなんか使わずにやってきました。 どうしてこんな無駄なことをするのかと思うかもしれませんが、 実は、Spinelが実行終了時に自動で全オブジェクトのFreeメソッドを呼び出しているからです。 ですから、いままで特に意識しなくてもメモリの解放は行われていたのです。
ボタンのように、終了時まで残っているオブジェクトならFreeを呼ばなくてもいいですが、
一時的に作成し、すぐに用がなくなるようなオブジェクトは、いらなくなった時点でFreeを呼び出してください。 |