Objective-Cという言語が面白いのは、コンパイラ言語でありながら、インタプリタ言語のような動的操作ができる点ではないかと思う。
実際にはCの上に構築されたプリプロセッサのようなイメージで、その操作はCのコードとランタイムライブラリへのアクセスへと還元することが出来る。そしてCの部分は隠蔽されることなく使用することが出来、それ故、インラインアセンブラのようにObjective-Cの操作をCで記述したコードを混在させるといったことも出来てしまう。そういった泥臭さはC言語族の特徴と言うべきなのだろうか。
ランタイムライブラリをいじらないまでも、例えば文字列で指定されたクラス名のインスタンスを作成するのはこんな感じで出来る。
Class klass = NSClassFromString(className); id obj = [klass alloc];
この機能を使用すると、テキストファイルで指定されているクラスのインスタンスを動的に作成するというようなことが出来る。
さらに、標準のXMLパーサNSXMLParserと組み合わせると、手っ取り早く(とりあえずの)設定を読み取り、インスタンスを生成するモジュールを実装することが出来る。
Object Creation With XMLの続きを読む




