http://decomo.info/wiki/" /> クソゲ〜製作所 - メソッドのポインタ

クソゲ~製作所

新システムに移行中:http://decomo.info/wiki/

« お届け物でーす | メイン | Cocoaは »
スポンサーリンク

2005年09月15日

 

メソッドのポインタ

 

http://decomo.info/wiki/blog/2005/2005-09-15に移行しました。

メソッドのポインタを取得して、メソッドをCの関数として呼び出す事が出来るのだとか。

// イニシャライズ
id obj = [Hogehoge new] ;
// メソッドのセレクタ取得
SEL method = @selector(methodOfHogehoge);
// セレクタからメソッドのポインタ取得
IMP func = [Hogehoge instanceMethodFor:method];

// 関数としてメソッド methodOfHogehoge を実行
func(obj, method);

肝となるのは、instanceMethodFor: メソッド。こいつが、セレクタ(メソッドの内部識別子)から、そのセレクタが表すメソッドのポインタを探し出してくれる。その返り値を、IMP型のポインタで受け取ると、あら不思議、Cの関数呼び出しの形でObjective-Cのメソッドが実行できちゃった。ただし、引数として、元のメソッドが含まれるオブジェクトと、メソッドのセレクタを渡してやらないといけない。

とりあえず、Objective-Cの勉強は一段落したが、俯瞰してみると、Objective-Cが「Cの枠組みの中でオブジェクト指向を目指した言語」であるということが、よくわかる。そのお陰か、Cの流れを汲んだオブジェクト指向言語であるC++と比べて、言語規模は格段に小さい(と思う)。

表記方法がかなり特殊ではあるが、初心者がオブジェクト指向を学ぶには、Objective-Cは結構いい言語なのでは?と思ったりした。

Decomo | 20:02

トラックバック

 

■このエントリーのトラックバックアドレス:
http://www.decomo.info/cgi-php/mt/mt-KusoGA-gattsuIshimatsu.cgi/156


■このエントリーのアドレス:
http://decomo.info/mt/archives/2005/200509152002.shtml

 

コメント

 
 

コメントをどうぞ...

 






保存しますか?