繁体   English   中英

NSArray的强属性并保留周期

[英]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 cycleB应该reference to A weak 但是要小心管理该数组中的对象。

最后我不知道您的结构,但是也许participants数组是对象Participant

考虑使用Delegation模式或KVO的可能性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM