OC内,我们往往做log打印时,会考虑一个Debug环境下打印,Release下控制不打印,以节约性能消耗。
OC我们可以这样做:
在pch文件内,定义如下:
//打印日志
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...)
#endif
在Swift内要实现同样效果,我们依然可以同理实现:
1、不同于OC,swift没有pch文件,但Swift中只要在一个文件中声明了一个公开的方法, 其他文件都是可以访问到的。
2、我们定义一个类文件,里面可以用来写公共方法等
在文件里加上如下:
/// 直接打印出内容
///
/// - Parameter message: <#message description#>
func YJLog<T>(message : T) { #if DEBUG
print("\(message)")
#endif
} /// 打印内容,并包含类名和打印所在行数
///
/// - Parameters:
/// - message: 打印消息
/// - file: 打印所属类
/// - lineNumber: 打印语句所在行数
func YJLogLine<T>(message : T, file : String = #file, lineNumber : Int = #line) { #if DEBUG let fileName = (file as NSString).lastPathComponent
print("[\(fileName):line:\(lineNumber)]- \(message)") #endif
}
其中,有两个方法:
第一个是只打印内容,效果和print一样。
第二个是包括打印类和打印行,类似下图:
其中:
#if DEBUG 这个是系统默认加好的,我们不用额外定义这个flag。