强化 Swift 中的 Print

在 Swift 中,最简单的输出方法就是使用 print(),在我们关心的地方输出字符串和值。

当程序变得非常复杂的时候,我们可能会输出很多内容,而想在其中寻找到我们希望的输出其实并不容易。我们往往需要更好更精确的输出,这包括输出这个 log 的文件,调用的行号以及所处的方法名字等等。

在 Swift 中,编译器为我们准备了几个很有用的编译符号,它们分别是:




























符号类型描述
#fileString包含这个符号的文件的路径
#lineInt符号出现处的行号
#columnInt符号出现处的列
#functionString包含这个符号的方法名字

有了上面的这些编译符号,我们就可以自定义一个输出函数:printm

public func printm(items: Any..., filename: String = #file, function: String = #function, line: Int = #line) {
    print("[\((filename as NSString).lastPathComponent) \(line) \(function)]\n",items)
}

因为输出是一个很消耗性能的操作,所以在releass环境下需要将输出函数去掉,将上面的函数换成:

#if DEBUG

public func printm(items: Any..., filename: String = #file, function: String = #function, line: Int = #line) {
    print("[\((filename as NSString).lastPathComponent) \(line) \(function)]\n",items)
}

#else

public func printm(items: Any..., filename: String = #file, function: String = #function, line: Int = #line) { }

#endif

参考:

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接.


 上一篇
CocoaPods 安装和使用 CocoaPods 安装和使用
前言最近换了新机器,重新搭建了开发环境,其中当然包括 CocoaPods。 装完顺便更新下 CocoaPods 安装文档。 正文安装CocoaPods 是用 ruby 实现的,要想使用它首先需要有 ruby 的环境。 升级ruby查看rub
2017-04-13 BY
下一篇 
Swift 3.1 的新变化「译」 Swift 3.1 的新变化「译」
Xcode 8.3 和 Swift 3.1 现在已经发布了(3/28)! 可以通过 AppStore 或 Apple Developer 进行下载 Xcode 8.3 优化了 Objective-C 与 Swift 混编项目的编译速度.
2017-03-30 BY
  目录