2014-05-25 71 views
1

我在做iOS應用程序中,我有一個Event類和Participant類。強大的屬性,並保留週期

Event類作爲NSArray *participants屬性具有strong屬性。 的Participant類需要有一個屬性指的事件參與者是英寸

我問自己,如果一個事實,即參與者陣列作爲strong屬性意味着,在這個NSArray中的每個參與者也作爲一個強大的屬性?因此,Participant類的事件屬性是否需要具有weak屬性以避免保留週期?

感謝您的幫助

回答

1

你是正確的Participant類應該有一個弱引用其Event如果您Event類具有很強的參考其Participant的。但是,您錯誤地認爲您的NSArray的強屬性意味着該陣列對每個Participant都有強烈的參考。 NSArray將始終保持對其所持物品的強烈參考。這是Event類對其強陣列的引用。

+0

哦,我看到了,謝謝你的回答 – Abel

+0

請注意,將參與者數組的引用更改爲弱將不會阻止保留週期。 – CrimsonChris

+0

是的,我看到,我不知道NSArray總是作爲它的對象的強有力的參考。謝謝 ! – Abel

1

是的,反比關係(參加者 - >事件)應該是weak,由於參與者不能沒有的情況下存在,這會導致沒有問題。這意味着如果您刪除了該事件,參與者也將自動解除分配。

0

如果您聲明NSArraystrong,您將保留參考號碼NSArray本身保留對象

而且YES,避免retain cycle如果object A retains BB應該只是有一個weakreference to A。但要小心該陣列中對象的管理。

最後,我無法弄清楚你的結構,但participants陣列是對象Participant

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