ios - Swift 语言中的 Logtrace 等价物 - iPhone

标签 ios iphone swift

Swift 语言中是否有任何等效的日志跟踪?

我不想使用桥头概念。

我想要实现的目标是,我希望 println 语句在应用程序的开发/暂存阶段写入控制台,并且通过轻按开关,控制台打印应该在推送到应用程序商店之前停止。

换个思路,println 会在分发期间自动停止在控制台上打印吗? (可能是迁移到 Swift 的好处)

最佳答案

您可以采用与内置 assert() 函数类似的方法,即 在 Swift 博客中解释:

logTrace 函数将“自动关闭”作为第一个参数:

func logTrace(message: @autoclosure () -> String, file: StaticString = __FILE__, line: UWord = __LINE__) {
        #if DEBUG
            let msg = message()
            println("\(file):\(line): \(msg)")
        #endif
}

示例用法:

let height = 13
logTrace ( "height = \(height)" )
// Output: /Users/.../main.swift:14: height = 13

要完成这项工作,您必须将“-DDEBUG”添加到“其他 Swift 标志”中 调试配置,对比

enter image description here

此方法的优点是(与assert()一样) block 不是 在发布配置中完全评估,其中未定义“DEBUG”,例如在

logTrace ( someFunctionReturningAString() )

该函数不会在发布配置中调用,因此任何副作用 或避免性能开销。


Swift 2 更新:

func logTrace(@autoclosure message: () -> String, file: String = __FILE__, line: Int = __LINE__) {
    #if DEBUG
        let msg = message()
        print("\(file):\(line): \(msg)")
    #endif
}

Swift 3 的更新:

func logTrace(_ message: @autoclosure () -> String, file: String = #file, line: Int = #line) {
    #if DEBUG
        let msg = message()
        print("\(file):\(line): \(msg)")
    #endif
}

关于ios - Swift 语言中的 Logtrace 等价物 - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828261/

相关文章:

ios - UICollectionView Vertical 最后显示一半的单元格

ios - 伞架

ios - 我们可以在谷歌地图中的标记周围添加自定义 View 或脉冲环动画吗

ios - 以编程方式删除 UITableView 的标题并自动调整内容的大小以填充删除的区域

ios - IOS 中的手势模式识别器。

ios - Swift 以编程方式向按钮添加显示操作

IOS - UITableController 部分页脚的背景颜色

ios - 如何从 ImageView 上的不可见按钮获得突出显示效果

swift - CABasicAnimation 忽略持续时间

xml - 究竟要在 XMLDSIG 上消化和签署什么以及如何消化? (或者,OSX 本地客户端与服务器上计算的 XMLDSIG 不匹配)