Swift中打印不像OC那樣每次打印系統(tǒng)會(huì)自己打印出時(shí)間和所在類名,所以在swift中要自己封裝.
自定義Log要用到的知識(shí)點(diǎn)
- 打印所在的文件
FILE // 會(huì)發(fā)現(xiàn)打印出的是全路徑,因此我們需要轉(zhuǎn)換一下
( FILE as NSString).lastPathComponent // 首先轉(zhuǎn)換為OC中的方法,然后取出全路徑最后一個(gè)字段,這時(shí)就是所在的類 - 打印所在方法名
FUNCTION - 打印所在的行
LINE
了解了上面三個(gè)知識(shí)點(diǎn),開始自定義Log
func MMLog<T>(message : T,file : String = FILE ,funcName : String = FUNCTION,lineNum : Int = LINE ){
let fileName = ( FILE as NSString).lastPathComponent
print((fileName):(funcName))-(message))
}
說(shuō)明:
①:MMLog 自定義的打印名稱,可以自行更改; ②:<T> 因?yàn)閙essage內(nèi)容類型是不確定的,所以這里用了泛類型<>,T隨便命名,一般都是用T,為動(dòng)態(tài)類型;③:其他參數(shù)都是用的默認(rèn)參數(shù);④:用的時(shí)候,把func MMLog 寫成全局函數(shù)(在任何一個(gè)類的最后定義的函數(shù),一般寫在Appdelegate類里面) ⑤:更高版本的"__"用"#"代替,而且要這樣寫print(fileName,":",[funcName],lineNum,"-",message)
寫在最后:
我們自定義Log的目的是,工程在Debug模式下,打印信息,在Release模式下,不打印信息. -
如下圖設(shè)置:
屏幕快照 2017-05-11 上午9.31.44.png #if DEBUG // DEBUG 字段和項(xiàng)目中的 -D DEBUG 一致,DEBUG可以自行定義 let fileName = ( __FILE__ as NSString).lastPathComponent print(\(fileName):[\(funcName)](\(lineNum))-\(message)) #endif- 配置完成后,項(xiàng)目在Resease模式下,就不會(huì)打印信息了.