在我們日常開發中,打印輸出作為調試手段還是占據相當大的一個比重的.但是打印又非常消耗性能,我們僅僅希望在調試階段使用,等到程序發布階段時又需要將所有打印全部撤銷或者注釋掉,在OC代碼中我們可以通過宏定義來解決這個,但是swift不支持宏定義,我們該怎么解決呢?
- 自定義log

如上圖所示,當我們調用自定義的打印方法時,控制臺輸出的信息相當明確,有打印所在的類
,所在的function
以及所在的行號
.
要想達到上述目的,github上有一款框架可以做到--->QorumLogs
- 下載地址: https://github.com/goktugyil/QorumLogs
但是今天要講的是自定義,下面就來帶大家自定義一個log
首先要明確幾點:- 在swift中,
__FILE__
就是包含這個符號的文件路徑 -
__FUNCTION__
是包含這個符號的方法名字 -
__LINE__
是符號出現所在的行號注意 : 在swift3.0中,以上幾個符號分別更換為#file,#function,#line
- 在swift中,
了解以上幾點后我們就可以寫代碼了
在AppDelegate中實現func
func ZDLog<T>(message : T,file : String = #file,method : String = #function,line : Int = #line) {
#if ZD_DEBUG
//處理文件名
let fileName = (file as NSString).pathComponents.last!
print("\(fileName)-\(method)[\(line)]-\(message)")
#endif
}
自定義完log后我們就需要處理debug以及release狀態下的log了,由于之前說到swift不支持宏定義,但是swift中有自定義flag
如上圖所示,點擊工程-Build Setting-->Custom flag-->在Other Swift Flags中添加-D ZD_DEBUG自定義的flag
就ok了! 做完這些就可以在開發階段無憂無慮地使用log來進行調試了~!