| 宏/表達式 | 格式 | 含義 |
|---|---|---|
__func__ | %s | 當前函數名(C99 標準) |
__LINE__ | %d | 源碼行號 |
__FILE__ | %s | 源文件完整路徑 |
__PRETTY_FUNCTION__ | %s | 含類名/簽名的函數名(GCC/Clang 擴展) |
NSStringFromSelector(_cmd) | %@ | 當前選擇器名稱 |
NSStringFromClass([self class]) | %@ | 當前對象類名 |
[[NSString stringWithUTF8String:__FILE__] lastPathComponent] | %@ | 源文件名(不含路徑) |
[NSThread callStackSymbols] | %@ | 調用棧符號表(僅調試用) |
#define DLog(fmt, ...) NSLog((@"%s:%d " fmt), __func__, __LINE__, ##__VA_ARGS__)
/* 使用示例 */
NSMutableArray *arr = [NSMutableArray array];
DLog(@"arr=%@", arr); // 輸出:ViewController.m:42 arr=()
[arr addObject:@"foo"];
DLog(@"arr=%@", arr); // 輸出:ViewController.m:44 arr=(foo)
NSLog= 空宏或導向 os_log 系統日誌callStackSymbols,性能開銷極大結合 NSJSONSerialization 將上下文字段序列化,便於 ELK/Splunk 等日誌平台索引分析。