我正在创建一个iOS应用,其中我有一个Event
课程和一个Participant
课程。
Event
类作为NSArray *participants
属性,具有strong
属性。
Participant
类需要有一个属性来引用参与者所在的事件。
我问自己,参与者数组作为strong
属性的事实是否意味着此NSArray中的每个参与者也是一个强大的属性?因此,Participant
类的事件属性是否需要具有weak
属性以避免保留周期?
感谢您的帮助
答案 0 :(得分:1)
如果您的Participant
类强烈引用其Event
,Event
类应该对其Participant
具有弱引用,这是正确的。但是,您错误地将NSArray
的强属性误认为数组对每个Participant
都有强引用。 NSArray总是会对其所持有的物品保持强烈的参考。 Event
类对其数组的引用很强。
答案 1 :(得分:1)
是的,反向关系(参与者 - >事件)应该是weak
,并且由于参与者在没有事件的情况下不能存在,这将导致没有问题。这意味着如果您删除该事件,参与者也将自动解除分配。
答案 2 :(得分:0)
如果您声明NSArray
strong
,,您将保留该阵列的引用。
是保留对象本身的NSArray
。
是,如果retain cycle
,object A retains B
应该只有{strong> B
{{}},则可以避免weak
{1}}。但要小心管理该数组中的对象。
最后我无法弄清楚你的结构,但是reference to A
数组可能是对象participants
?
考虑使用Participant
模式或Delegation
。