1. ホーム
  2. objective-c

[解決済み] iPhoneでObjective-Cを使ったNSLogのメソッド名表示

2022-04-27 10:14:21

質問

現在、ログのクラス名とソース行番号を出力する拡張ログ機構を自分たちで定義しています。

#define NCLog(s, ...) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \
    __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__])

例えば、NCLog(@"Hello world")を呼び出すと。 と出力されます。

<ApplicationDelegate:10>Hello world

今度は、メソッド名をログアウトさせるようにしたい。

<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world

このように、どのメソッドが呼ばれているのかがわかると、デバッグが楽になりますね。Xcodeのデバッガもありますが、ログアウトしてデバッグすることもあります。

どのように解決するのですか?

print(__FUNCTION__) // Swift
NSLog(@"%@", NSStringFromSelector(_cmd)); // Objective-C

Swift 3 以上

print(#function)