iOS中的循环引用问题

如题,最近检查代码,慢慢的填之前挖过的坑,发现之前写的代码真是差到不忍直视。发现很多循环引用问题。

容易引起循环引用的问题总结

  • 1.delegate的写法,应按照如下写法,切记不可存在strong标示符。
@property (nonatomic, weak, nullable) id <UICollectionViewDelegate> delegate;
@property (nonatomic, weak, nullable) id <UICollectionViewDataSource> dataSource;
  • 2.单例里面的变量。
    错误写法,然后将self传入,导致释放不掉。
@property (nonatomic,strong) UIViewController *mViewController;
  • 3.block里面注意弱引用self即可。
  • 4.传值时注意被赋值的变量。
UIViewController *vc;//默认为strong类型,同样可写为UIViewController __strong *vc
UIViewController __weak *vc;//通过__weak弱引用变量。

5.NSTimer
会对传入的target强引用,具体参看Weak Reference to NSTimer Target To Prevent Retain Cycle
解决办法有两个:
a.GCD完成NSTimer的功能
https://github.com/mindsnacks/MSWeakTimer
b.用一个中间对象处理
YYWeakProxy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,743评论 0 6
  • 一说起快速阅读,肯定会让人联想想到一天刷个几本书,一目十行的感觉。然而本文所说的快速阅读不是那种通过训练眼球移动速...
    大刘leo阅读 3,858评论 0 4
  • 竭力地 想和这个世界发生关系 却感到自己 越来越无声无息 像个影子潜世枯萎 独自缩短拉长 在昏暗繁杂的路上 吸食那...
    木子魚說阅读 3,211评论 7 4
  • 生活很累
    amy1222阅读 1,722评论 0 0
  • 今天是一个吉祥的日子,因为我的科目二考试通过,而且还是100分,哇哈哈… 当然,以上纯属炫耀,接下来说点正事。 今...
    恩煦阅读 1,488评论 1 0