1

メソッドが呼び出されたときにログに記録する 2 つのプリプロセッサ マクロがあります。1 つのマクロは、メソッドの名前を記録するだけです。indexPathメソッドの名前と引数の値(2 つのインデックスを持つ NSIndex*)をログに記録するために UITableViewDelegate メソッドに使用するもう 1 つのマクロ。

#define LogMethodName  \
    { NSLog(@"%s", __PRETTY_FUNCTION__) ; }
#define LogMethodNameAndIndexPath  \
    { NSLog(@"%s  {%lu, %lu}", __PRETTY_FUNCTION__, [indexPath indexAtPosition:0] , [indexPath indexAtPosition:1] ) ; }

可能かどうかは疑問ですが、1 つのマクロでこれら 2 つの作業をindexPath実行したいと思います。引数を持つメソッド内LogMethodNameAndIndexPathで使用すると、 と同様のコードが実行され、のようなコードを実行しindexPathます。indexPathLogMethodName

これは可能ですか?何十もの Stack Overflow の質問に目を通しましたが、理解できる答えが見つかりませんでした。以下に示すコードを試してみましたが、Xcode は、indexPath4 行目が定義されていない場合に参照することを好みません。また、4 行目が定義されている場合にのみ実行するよう Xcode に確認する方法もありませんindexPath

#define LogMethodNameAndIndexPathWhenPresent {                                                                                                    \
    NSString* stringToLog = [NSString stringWithUTF8String:__PRETTY_FUNCTION__] ;                                                                 \
    if ( [stringToLog hasSuffix:@"AtIndexPath:]" )                                                                                                \
        stringToLog = [stringToLog stringByAppendingFormat:@"  {%lu, %lu}", [indexPath indexAtPosition:0] , [indexPath indexAtPosition:1] ] ;     \
    NSLog(@"%@", stringToLog) ;                                                                                                                   \
}
4

0 に答える 0