Xcode升級到8以后,大家基本都會發(fā)現(xiàn)一個問題,就是模擬器下打印的日志里面會有一些額外的無用信息,當然對于這個問題大家可有通過在下圖的位置添加這個設置來解決額外信息打印的問題。

加上這個設置以后,模擬器確實沒有了那些煩人的額外信息輸出了,但是新問題出來了,這時候換成iOS10.0的真機測試,發(fā)現(xiàn)沒有日志打印了。其實這個不能說是一個bug,應該是蘋果的一個進步,因為我們知道,系統(tǒng)日志的打印對應app的性能是有一定影響的,平時我們?yōu)榱俗屜到y(tǒng)日志在release模式下不打印,都會在pch文件中通過以下定義來實現(xiàn):
//清除release模式所有打印日志
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif
否則,線上的包也會產(chǎn)生很大打印日志,一定程度影響APP的性能。讓真機能夠正常打印日志的方法有兩種,一個就是通過自定義日志輸出,網(wǎng)上有很多,這里不做論述;第二種就是不借助任何第三方知識,只要把上圖所設置的模式去掉即可,這時你會發(fā)現(xiàn),在真機下其實是不會有額外煩人的打印日志的,只是在模擬器下會有。所以,對于一直用真機運行的朋友來說,根本不存在額外煩人日志的問題,對于喜歡用模擬器的朋友,如果不進行上圖的設置,打印的開始會出現(xiàn)額外的日志信息,不過其實也沒有多少,即使有也會很快被下面的有用日志所覆蓋掉。為了在真機和你模擬器下都能正常打印系統(tǒng)日志,最好不要進行上圖的設置,當然還是要在pch文件中進行release模式不打印日志的設置。當然如果你設置了上圖的設置,模擬器下打印正常,真機不打印,正好可以不用進行額外的release模式設置了,哈哈,如果你不怎么用真機測試的話可以這么搞。
如果對于有強迫癥的朋友來說,即想在模擬器下不打印額外煩人日志,又能在真機下打印日志,那就介紹一個簡單的自定義日志打印方式。首先為了確保模擬器下打印正常,還是要進行上圖的設置,其次,在pch文件中添加如下代碼:
#ifdef DEBUG
#define TonyString [NSString stringWithFormat:@"%s", __FILE__].lastPathComponent
#define TonyLog(...) printf("%s: 第%d行: %s\n\n", [TonyString UTF8String] ,__LINE__, [[NSString stringWithFormat:__VA_ARGS__] UTF8String]);
#else
#define TonyLog(...)
#endif
這樣在我們的項目中需要打印日志的地方,我們就可以通過TonyLog(...)來進行打印了,不用系統(tǒng)的NSLog()了,當然也不用額外再設置release模式下禁止打印了,因為上面已經(jīng)設置過了,哈哈。