美文网首页
逃逸闭包和非逃逸闭包

逃逸闭包和非逃逸闭包

作者: 磊简单 | 来源:发表于2018-08-24 14:35 被阅读0次

    非逃逸闭包

    闭包在函数返回之前执行。

    逃逸闭包

    逃逸闭包则恰恰相反,其生命周期长于相关函数。当函数推出时,逃逸闭包仍然被其他对象持有,不会在相关函数结束后释放。
    出现情况:

      1,异步调用,如网络请求,如果需要在调度队列中持有闭包,这个队列会持有闭包的饮用,什么时候调用闭包不可预知。
      2,闭包被存储成属性,全局变量或其他类型稍后使用。
    

    逃逸闭包内如果引用self要做特殊处理,防止造成循环引用。
    [weak self] [unowned self]
    weak 和 unowned 的区别:
    如果引用对象的生命周期内,如果他可能为nil用weak。反之用unowned

    相关文章

      网友评论

          本文标题:逃逸闭包和非逃逸闭包

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