iOS 关于修饰代理用weak还是assign

本文探讨了Objective-C中weak、strong与assign修饰符的区别。weak指明对象不负责保持delegate,strong则强引用delegate可能导致循环引用,assign主要用于基本类型且有产生野指针的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于这个问题,昨天看朋友写的代码偶尔注意到的。自己平常都是用weak进行修饰,他却用到了assign一时不知对错。然后搜索了一下。下面罗列一下结果。

对于weak:指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。

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

对于assing:也有weak的功效。但是网上有assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针。以上是自己搜索看到的解答,谁有更好的说法,可以评价回复。采纳优质意见。

转载于:https://www.cnblogs.com/fzkwan5438020/p/5579260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值