swift3中自定义打印log
2017-08-01 本文已影响58人
优米诺
不知不觉swift已经3岁了,期间也就在15年底和16年上半年用2.0和2.2在项目中进行过混编,也是一把泪吧。后来就放弃混编了,太不稳定了。现在决定再次开始在项目中进行swift和OC混编,也算是摸着石头过河吧!
func DLog<T>(_ message : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
#if DEBUG
let fileName = (file as NSString).lastPathComponent
let className = (fileName as NSString).deletingPathExtension
print("\(fileName):(line:\(lineNum))-[\(className) \(funcName)]-\(message)")
#endif
}
此代码是网上下的一个demo里的,我自己稍微改造了下,调用方法的输出会跟OC一样用 '[ ]',如果你不习惯的话自己改动一下就好了。但是我放到自己的项目中发现并不会打印信息,如果去掉其中的 'if' 判断就可以正常输出打印,后来发现swift中并没有识别这个 'debug'
Snip20170801_2.png经过上面的设置后就可以正常输出打印了
// 或者不想配置可以使用下面这段代码
// 这是通过函数判断编译的优化选项
// 但是不够直观而且没有官方的文档,所以不建议使用。
if _isDebugAssertConfiguration() {
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNum))-\(message)")
}