美文网首页
实现 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