导语
在开发中经常会打印出一些内容来进行调试,但是这些打印内容会消耗性能,所以我们需要在 Release (发布)的时候取消这些打印,而在开发调试中将这些内容展示出来。
Objective-C中有宏定义,我们可以在预编译文件中写入以下代码:
#ifdef DEBUG
#define JYHLog(...) NSLog(__VA_ARGS__)
#else
#define JYHLog(...)
#endif
这样就可以在开发时使用JYHLog(@"Something")来打印内容,而在发布的时候这些输出代码会被替换为空,从而减少了性能消耗。
而在Swift中,没有宏定义这种东西,所以我们要自己在Xcode中加入:
利用Swift全局函数的功能:将函数定义在项目中任意一个类文件的class外面,就可以在项目中的任何地方均可以调用这个方法.
我们可以在AppDelegate文件中添加以下代码:
func JYHLog<T>(_ message : T, file : String = #file, funcName : String = #function, lineNum : Int = #line) {
#if DEBUG
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNum))-\(message)")
#endif
}
可以自行更改里面输出的内容,代码中的DEBUG就是我们之前在XCode中添加的swift flag。
该函数使用了泛型,可以使我们传递任意类型的数据进去