Swift 避免循环引用

1、block

self.dataBack = { [weak self] (result) in 

self?.dataArr = result as! [String]

   }

    block 通过 [weak self] 将self的强引用改为弱引用


2、delegate

一般声明delegate 属性的时候,用weak修饰。tableView的delegate实现也是如此

weak open var delegate: UITableViewDelegate?

1)自定义代理协议的时候,应继承NSObjectProtocol,这时使用weak不会报错。

因为'weak' must not be applied to non-class-bound 'CustomViewDelegate'; consider adding a protocol conformance that has a class bound 

得修饰一个有类绑定的协议

2)@objc 

    声明代理协议的时候,如果前面有@objc关键字的话, 也可以用weak修饰delegate属性

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.weak和assign区别 修饰变量类型的区别: weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错...
    coderjon阅读 1,119评论 0 1
  • 出题者简介: 孙源(sunnyxx),目前就职于百度,负责百度知道 iOS 客户端的开发工作,对技术喜欢刨根问底和...
    戈多_于勒阅读 1,877评论 0 5
  • 摘自: http://www.cocoachina.com/ios/20150803/12872.html 说明...
    program袁阅读 931评论 1 3
  • 昨晚聊起大学的变化,我问PP我这四年什么变化,他说变得不爱玩了,我以前很爱玩吗? 大学第一次准备看的毕业送旧晚会,...
    仂七阅读 154评论 0 0
  • 黄沙万里他一去几年不归 月圆月缺寂寞空庭她望眼欲穿 他说黄沙百战穿金甲,不破楼兰终不还 男人莫因卿卿我我而失了气节...
    蝉栖月影阅读 230评论 0 0

友情链接更多精彩内容