2012-01-21 20 views
3

可能性の重複:
Dynamically retrieving current method's name
Obj-C introspection: How can a method reference it's own selector?現在のセレクタに展開するプリプロセッサマクロはありますか?

これは、Objective-Cのに適用され、現在のセレクタのSELの値を取得するためのプリプロセッサマクロか何かはありますか?

-(void) someSelector 
{ 
    SEL mySelector = __CURRENT_SELECTOR__; 
    NSLog(@"I'm in selector %@",NSStringFromSelector(mySelector)); 
} 

それが現在のセレクターを取得するために、マクロが、この__FILE__のようにちょっとです:具体的に私のようなものを探しています。セレクタ名が変更された場合に更新することを心配せずに、他の人に渡すことはかなり便利です。

答えて

9

すべてのメソッドには、id(受信者)とSELという_cmdという2つの暗黙のパラメータがあります。これはおそらく必要なものです。

これはプリプロセッサやコンパイル時には何もしないことに注意してください。_cmdはマクロではなく、引数です。

-(void) someSelector 
{ 
    NSLog(@"I'm in selector %@",NSStringFromSelector(_cmd)); 
} 
0
NSLog(@"%s" , _cmd); 

_cmdは、あなたの質問に答えるべきであると述べた何sidyll現在のセレクタ(Objective-Cのでのみ使用可能)

4

を取得します。単にロギングに必要な場合は、通常のCキーワードを使用することもできます。

NSLog(@"%s" , __PRETTY_FUNCTION__); 
関連する問題