美文网首页
实现 debugOnly 函数

实现 debugOnly 函数

作者: NapoleonY | 来源:发表于2020-05-25 18:54 被阅读0次

概述

一般实现 debug 函数是通过compile flag (也就是编译宏)去实现的

func debug(_ action: () -> Void) {
    #if DEBUG
    action()
    #endif
}

但这种方式需要修改工程配置
今天看别人博客有如下实现方式

assert

func debugOnly(_ body: () -> Void) {
    assert({ body(); return true }())
}

assert声明如下

func assert(
    _ condition: @autoclosure () -> Bool,
    _ message: @autoclosure () -> String = default,
    file: StaticString = #file,
    line: UInt = #line
)

The condition to test. condition is only evaluated in playgrounds and -Onone builds(the default for Xcode's Debug configuration).

condition 因为 @autoclosure 的标记会把传入的值自动装到闭包里,然后只有在 debug 模式下才会执行并且求值,通过这种方式就可以很完美地实现一个 debugOnly 函数

参考

  1. 巧妙实现 debugOnly 函数

相关文章

网友评论

      本文标题:实现 debugOnly 函数

      本文链接:https://www.haomeiwen.com/subject/jcluahtx.html