美文网首页
swift中的@noescape和@autoclosure

swift中的@noescape和@autoclosure

作者: 逗留 | 来源:发表于2016-08-11 16:44 被阅读5次

    //非逃逸闭包(指明闭包是在函数前执行,不能用于外部应用,另外声明了非逃逸闭包后,在闭包中不用添加self(非逃逸不存在循环引用))

    //非逃逸闭包

    func aaa(@noescape clo: (Void->Void)) {

    clo()

    }

    aaa {print("...")}

    //逃逸闭包

    var closure : (Void->Void)?

    func bbb(clo: (Void->Void)) {

    closure = clo

    }

    bbb {print("...")}

    closure!()

    //自动闭包(自动将表达式转化为闭包,只能用于无参 ()->T )

    //自动非逃逸闭包

    func ccc(@autoclosure clo: ()->Bool) {

    if clo() {

    print("...")

    }

    }

    ccc(2>1)

    func ccc2(clo: ()->Bool) {

    if clo() {

    print("...")

    }

    }

    //ccc2(2>1)  ❌

    ccc2 {2 > 1}

    相关文章

      网友评论

          本文标题:swift中的@noescape和@autoclosure

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