Class型
クラス変数を「インスタンス化した」時、そのオブジェクトの中には「自分自身のクラス定義内容」も入っている。これを「クラスオブジェクト」という。実はこれこそがNSObjectクラスの主な機能である。
これはClass型で定義され、変数にも代入できる。代入するメソッドはclassである。
万が一クラスオブジェクトが存在しない時は「Nil」という値が返ってくる。ここではNULLは使わんようだ。
定義内容そのものを動的に取得可能というわけだ。しかも、その定義内容を元にインスタンスを作成することも出来る。型(定義)そのものを変数に代入し、その変数に代入された型で変数を宣言できるということだ。
うぉっ、ややこしい。でもなんかうまく使えば強力そう。
@interface Test : NSObject
+ (void)Write; // クラスメソッド
- (id)init; // インスタンスメソッド
@end
@inprementation Test
省略
@end
int main()
{
Class testClass = [Test class]; // Class型変数testClassを宣言し、Testというクラスのクラス情報を代入する
// testClassはクラス宣言に相当する
[testClass Write]; // testClass->Write();相当 Writeがクラスメソッド(+)だから呼び出せる
[[testClass new] ObjFree]; // testClassの保持するクラス型のオブジェクトを作成→即解放している
[testClass ObjFree]; // クラスオブジェクトを解放
return(0);
}
0 件のコメント:
コメントを投稿