笔记摘要(十一)--Swift3.0之解决实例/闭包的循环强引用

  • 解决实例之间的循环强引用

    • 可以通过定义类之间的关系为弱引用或无主引用,以替代强引用,从而解决循环强引用的问题。
    • 对于生命周期中会变为nil的实例,使用弱引用,关键字weak
    • 对于初始化赋值后再也不会被赋值为nil的实例,使用无主引用。
    • 弱引用必须被声明为变量,表明其值能在运行时被修改。弱引用不能被声明为常量。
    • 无主引用是永远有值的,因此,无主引用总是被定义为非可选类型。关键字unowned
  • 解决闭包引起的循环强引用

    • 在定义闭包时同时定义捕获列表作为闭包的一部分,这样可以解决闭包和类实例之间的循环强引用。
    • 在闭包和捕获的实例总是互相引用并且总是同时销毁时,将闭包内的捕获定义为无主引用。
    • 在被捕获的引用可能会变为nil时,将闭包内的捕获定义为弱引用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容