3

重複の可能性:
現在のメソッドの名前を動的に取得する
Obj-Cイントロスペクション:メソッドはどのようにして自身のセレクターを参照できますか?

これはObjective-Cに適用されますが、現在のセレクターのSEL値を取得するためのプリプロセッサーマクロなどはありますか?具体的には、次のようなものを探しています。

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

マクロに似て__FILE__いますが、これは現在のセレクターを取得するためのものです。セレクター名が変更された場合に更新することを心配せずに、他の人に渡すのに非常に便利です。

4

3 に答える 3

9

すべてのメソッドにselfは、id(レシーバー)とSEL呼び出されたという2つの暗黙的なパラメーターがあります。これは、_cmdおそらく必要なものです。

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

-(void) someSelector
{
    NSLog(@"I'm in selector %@",NSStringFromSelector(_cmd));
}
于 2012-01-21T15:13:53.783 に答える
4

シディルが言ったことはあなたの質問に答えるべきです。ロギングに必要な場合は、通常のCキーワードを使用することもできます。

NSLog( @"%s" , __PRETTY_FUNCTION__ );
于 2012-01-21T17:56:25.787 に答える
0
NSLog( @"%s" , _cmd );

_cmdは、現在のセレクターを取得します(objective-cでのみ使用可能)

于 2012-01-21T15:13:55.607 に答える