NSArray的强属性和保留周期

时间:2014-05-25 09:37:52

标签: ios objective-c properties

我正在创建一个iOS应用,其中我有一个Event课程和一个Participant课程。

Event类作为NSArray *participants属性,具有strong属性。 Participant类需要有一个属性来引用参与者所在的事件。

我问自己,参与者数组作为strong属性的事实是否意味着此NSArray中的每个参与者也是一个强大的属性?因此,Participant类的事件属性是否需要具有weak属性以避免保留周期?

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

如果您的Participant类强烈引用其EventEvent类应该对其Participant具有弱引用,这是正确的。但是,您错误地将NSArray的强属性误认为数组对每个Participant都有强引用。 NSArray总是会对其所持有的物品保持强烈的参考。 Event类对其数组的引用很强。

答案 1 :(得分:1)

是的,反向关系(参与者 - >事件)应该是weak,并且由于参与者在没有事件的情况下不能存在,这将导致没有问题。这意味着如果您删除该事件,参与者也将自动解除分配。

答案 2 :(得分:0)

如果您声明NSArray strong,您将保留该阵列的引用。 是保留对象本身的NSArray

,如果retain cycleobject A retains B应该只有{strong> B {{}},则可以避免weak {1}}。但要小心管理该数组中的对象。

最后我无法弄清楚你的结构,但是reference to A数组可能是对象participants

考虑使用Participant模式或Delegation

的可能性