美文网首页
swift - 闭包逃逸

swift - 闭包逃逸

作者: GA_ | 来源:发表于2017-03-14 15:29 被阅读17次
定义:
    当一个传入函数的闭包在函数执行结束之后才会被调用,这样的闭包就叫做逃逸闭包。如果一个函数的参数有一个逃逸闭包,可以在参数前加@escaping关键字来修饰。

    func requestData(complete: @escaping () -> ()) {
        request { (model) in
            self.headViewModel = HeadViewModel(model.headModel)
            complete()
        }
    }

注意:
    逃逸闭包如果需要使用对象的变量或常量的时候,必须显示指明self,如果是普通的闭包,可以直接使用对象的变量或常量。

var completionHandlers: [() -> Void] = []
func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) {
    completionHandlers.append(completionHandler)
}

func someFunctionWithNonescapingClosure(closure: () -> Void) {
    closure()
}

class SomeClass {
    var x = 10
    func doSomething() {
        someFunctionWithEscapingClosure { self.x = 100 }
        someFunctionWithNonescapingClosure { x = 200 }
    }
}

相关文章

  • iOS swift 逃逸闭包(@escaping)和非逃逸闭

    iOS swift 逃逸闭包(@escaping)和非逃逸闭包 (@noescaping) 逃逸闭包: 逃逸闭包...

  • Swift中的闭包

    在Swift中有两种闭包,逃逸闭包(@escaping)和非逃逸闭包(@nonescaping)。从Swift 3...

  • Swift: @escaping 和 @noescaping 是

    @noescaping: 非逃逸闭包类型@escaping: 逃逸闭包类型 Swift 3.0 之后,传递闭包...

  • 逃逸闭包&非逃逸闭包

    逃逸闭包&非逃逸闭包 Swift中的闭包有两种:逃逸闭包和非逃逸闭包,前者表示闭包将在函数返回之后执行;而后者则表...

  • swift 逃逸闭包和非逃逸闭包的区别

    swift 逃逸闭包和非逃逸闭包的区别 逃逸闭包:闭包做为函数的参数传递时,在函数体结束后被调用,我们就说这个闭包...

  • iOS开发随笔

    1.swift3.0后的闭包默认是非逃逸闭包, 所以在逃逸闭包前需要添加@escaping2.instrument...

  • Swift 5.1 (7) - 闭包

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「闭包」「逃逸闭包」「尾随闭包」作者: 沐灵洛审校: Qi...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • swift 非逃逸闭包、逃逸闭包的使用场景

    闭包只有在函数中做参数时才会区分逃逸闭包和非逃逸闭包。Swift 3.0之后,传递闭包到函数中的时候,系统会默认为...

网友评论

      本文标题:swift - 闭包逃逸

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