[英]Strong attribute on NSArray and retain cycle
我正在制作一个iOS应用程序,其中有一个Event
类和一个Participant
类。
Event
类作为具有strong
属性的NSArray *participants
属性。 Participant
类需要具有一个属性,该属性引用参与者所在的事件。
我问自己,是否将参与者数组作为strong
属性这一事实是否意味着该NSArray中的每个参与者也都作为强属性? 因此, Participant
类的事件属性是否需要具有weak
属性以避免保留周期?
谢谢你的帮助
如果您的Event
类强烈引用其Participant
的,那么您对Participant
类对其Event
引用应该是弱的,这是正确的。 但是,您将NSArray
的strong属性误认为是该数组对每个Participant
具有强引用。 NSArray将始终对其拥有的项目保持强烈的引用。 Event
类对其数组的引用很强。
是的,逆关系(参与者->事件)应该是weak
,并且由于没有事件就不能存在参与者,因此不会造成任何问题。 这意味着,如果您删除该事件,则参与者也将被自动解除分配。
如果声明一个NSArray
strong
, 则将保留该数组的引用 。 是NSArray
本身保留对象 。
是的 ,为了避免如果object A retains B
retain cycle
, B
应该reference to A
weak
。 但是要小心管理该数组中的对象。
最后我不知道您的结构,但是也许participants
数组是对象Participant
?
考虑使用Delegation
模式或KVO
的可能性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.