小记:Swift中debugPrint()是运行在debug模式下吗?
答案显然是否定的,但是有什么区别?
项目中一般都会沿用oc的习惯,使用自定义log,定义环境标识符,偶然翻看基础,突然想debugprint听起来不就是在debug模式下运行吗,还定义啥,验证一下,果不其然,不是想当然的,虽然很好验证,但是,良好的经验和习惯还是很重要的。。。
首先确定下debugprint 在 release模式下也会打印的事实:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("xxx")
debugPrint("xxx")
print(1...5)
debugPrint(1...5)
}
}
环境:
看输出:
xxx
"xxx"
1...5
ClosedRange(1...5)
显然不管是print还是debugprint 在两种模式下都会打印
那两个有什么区别呢?
其实区别不大,debugprint 只是将输出的信息输出的更加标准和完善,以帮助调试代码
可以看到,前两行:print直接输出了内容,debugprint输出加了双引号,指出输出的是一个字符串;
后两行打印一个区间,print直接输出了区间范围,简洁明了,而debugprint不仅输出了区间范围,还指出了这是一个闭合区间。
总之,debugprint在输出上的信息更加完善一些,会有一些帮助。
如果想让log区分环境,还是要自定义log来使用,毕竟log也是有一定的性能损耗的。顺便把自定义的log贴上吧
自定义log
一般写在APPdelegate中
//全局函数
func WXPrint<T>(_ message:T,files:String = #file,function:String = #function,line:Int = #line){
#if DEBUG
let file = (files as NSString).lastPathComponent
print("\(">>>>> ")\(file)-(\(function))->[\(line)]:\(" <<<<<")\("\n")\(message)")
#endif
}
关键是判断标记 DEBUG的配置
示例:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
WXPrint("自定义log")
}
}
与君共勉!