iOS开发-修饰代理delegate用weak还是assign?

1.对于strong:

该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用(Retain Cycles)

2.对于assing:

assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针。

@property (nonatomic, assign, readwrite) id delegate;

即便delegate指向的对象销毁了,delegate中依然会保存之前对象的地址,即delegate成为了一个野指针。

3.对于weak:

指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。当delegate指向的对象销毁后,delegate = nil。

修饰代理delegate用weak还是assign?
答案:使用weak。

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

推荐阅读更多精彩内容

  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,014评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,039评论 0 12
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,365评论 0 6
  • 叶是普通城镇的一个普通的女孩,像这个城镇其他的女孩一样,因为她是家中的老大,因为她是一个女孩,所以在她下面还有一个...
    Phyllis西阅读 765评论 1 2
  • 俗话说:“一年四季吃枸杞,人可与天地齐寿”。枸杞子是一味很好的滋补品,可清肝明目、滋阴润肺、滋肾益精。 ...
    枸杞行业评论员阅读 301评论 0 1