Xcode控制臺(tái)輸出內(nèi)容不全

小伙伴反應(yīng)有時(shí)候控制臺(tái)打印json內(nèi)容不全
如下圖

  1. 這是之前用的,如下
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...)
#endif

改成了,如下

#ifdef DEBUG
// #import <UIKit/UIKit.h>
#define NSLog(FORMAT, ...) printf("%s %s: %s: %d\t%s\n\n", [((id(*)(void))method_getImplementation(class_getClassMethod(NSObject.class, @selector(ff_getConsoleLogOfTime))))() UTF8String], [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"] UTF8String], [[[NSString stringWithUTF8String: __FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat: FORMAT, ## __VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif

ff_getConsoleLogOfTime是放在NSObject分類中

+ (NSString *)ff_getConsoleLogOfTime {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
    return [dateFormatter stringFromDate:[NSDate date]];
}
  1. 但是報(bào)錯(cuò),如下


因?yàn)闆]有找到對(duì)應(yīng)的定義,導(dǎo)入頭文件即可 #import <UIKit/UIKit.h>

  1. 修改完成后,重新編譯發(fā)現(xiàn)許多警告

這是因?yàn)樵谑褂眠@個(gè)宏的時(shí)候,當(dāng)前文件沒有找到這個(gè)方法

  1. 我們可以忽略這個(gè)警告
    方法1:這種方式需要在每個(gè)NSLog顯式指定編譯器忽略該警告,麻煩,棄之
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
NSLog(@"用戶未錄入指紋"); 
#pragma clang diagnostic pop

方法2:Undeclared Selector 改為 No

方法3:Other Warning Flags 添加 -Wno-undeclared-selector

三種方法都行,我選第二種,不要問為什么,因?yàn)閼?,哈哈~

  1. version

不定期更新 不合適的地方 還請(qǐng)指點(diǎn)~ 感激不盡

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容