微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

快速捕获自我封闭

如何解决快速捕获自我封闭

我有以下Swift代码

  func callback(_ status: PHAuthorizationStatus) {

  }

  func myFunction() {

    let handler:(PHAuthorizationStatus) -> Void = { (status) in
         self.callback(status)
     }

      PHPhotoLibrary.requestAuthorization(for: .addOnly) { (status) in
          handler(status)
     }       

  }

我的疑问是,在声明为局部变量的闭包中是否存在保留周期,以及是否应在处理程序中使用uNown或weak self。 Swift如何处理在函数内部声明为局部var的闭包?

解决方法

有两种可能性:要么您调用的函数只能在函数本身运行时调用闭包,然后局部变量才能使闭包保持活动状态。

或者您调用的函数会将闭包保存在某个位置,并且可以在函数返回后调用闭包。在这种情况下,该函数将其闭包参数声明为“ @escaping”,这将使其保持活动状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。