メソッドが呼び出されたときにログに記録する 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
ます。indexPath
LogMethodName
これは可能ですか?何十もの Stack Overflow の質問に目を通しましたが、理解できる答えが見つかりませんでした。以下に示すコードを試してみましたが、Xcode は、indexPath
4 行目が定義されていない場合に参照することを好みません。また、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) ; \
}