Swift 自定义Log(Debug — Release)
2016-09-29 本文已影响54人
浮桥小麦
NO.1 先了解下 Debug 和 Release 的区别
- Release是发行版本,比Debug版本有一些优化,文件比Debug文件小 Debug是调试版本,Debug和Release调用两个不同的底层库。
- 一、"Debug是调试版本,包括的程序信息更多"
- 二、只有DEBUG版的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句。
- 三、REALEASE不包含任何调试信息,所以体积小、运行速度快。
NO.2
- 在Swift中我们普通打印的话,默认只会打印想要打印的内容不会像OC那样打印附加的一些信息
print(“我是帅哥吗?")
- 系统只会打印:
不会有其它信息,所以我们在调试的时候是不方面的,所以我们需要自己写一个打印方法,来显示一些必要的打印信息,方便我们平时调试程序
NO.3 直接上代码,写在 AppDelegate 中的一个全局函数
func JJLog<T>(messsage : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNum))-\(messsage)")
}
- 使用:
JJLog("就是帅哥")
Snip20160929_5.png
这样就会显示是在哪个类,哪一行进行的打印
NO.4 最后我们还要设置在Release状态下不会出现这些打印
- 按下面的操作,给Debug状态设置一个标记,这样系统会判断只在Debug状态才进行打印
- 在Build Settings 搜索 Swift flags 展开Debug 添加标记 并在我们的全局函数中加入判断
func JJLog<T>(messsage : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
#if DEBUG
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNum))-\(messsage)")
#endif
}
- 这样设置后,我们的调试打印,在Release情况下就不会再打印了