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 件のコメント:
コメントを投稿