0

現在のメソッドをログ ステートメントの一部として出力する特別なNSLogメソッド スウィズルがあります。

Objective-C メソッドの場合、次を使用するマクロがあります。NSStringFromSelector(_cmd)

Objective-C 以外のメソッドについては、定義されていない__PRETTY_FUNCTION__ので使用する 2 つ目のマクロがあります。_cmd

私は現在、両方に同じマクロを使用しようとしているので、それが定義されているかどうかをテストしようとしており、次のようにできると考えています。

NSString *command = (&_cmd != nil ? NSStringFromSelector(_cmd) : [NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding])

Use of undeclared identifier '_cmd'ただし、Objective-C 以外のメソッドでマクロを使用すると、まだいくつかのエラーが発生します。_cmdが定義されているかどうかを判断する実行時テストを行うにはどうすればよいですか?

4

1 に答える 1

1

_cmdが定義されているかどうかを実行時にテストすることはできません。

__PRETTY_FUNCTION__マクロは、Objective-C メソッドで定義されます。どこでも使用するだけで、使用__PRETTY_FUNCTION__しようとしないでください_cmd

例:

- (IBAction)mapWasTapped:(UITapGestureRecognizer *)sender {
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

出力は次のとおりです。

2012-12-01 11:45:30.036 TestApp[92581:c07] -[MainViewController mapWasTapped:]
于 2012-12-01T17:47:23.693 に答える