2011-06-30 53 views
0

我有一個存儲聯繫人列表的控制器類,我需要將此列表共享到將在此類數組上實現KVO的對象。分享NSArray實例到KVO對象

最明顯的解決方案是使用NSArray而不是NSMutableArray,以便每個人都可以使用控制器的相同實例變量,並且不可能修改數組的內容。

現在讓我們來看看這個列表每3分鐘可以更改一次,只有控制器可以更新數組的內容。

如果我的dealloc並重新初始化聯繫人列表數組,我所有的志願對象將失去參考我的數組。

終於: NSArray PRO:沒有人可以改變數組的內容 NSArray CON:控制器不能修改沒有dealloc的數組,因此其他對象丟失了引用。可以修改數組內容,所有的對象都可以很容易地共享同一個數組的引用。 NSMutableArray CON:每個人都可以修改數組。

有什麼建議嗎?

回答

1

NSArray在我看來,因爲它沒有被經常更新。

擁有並修改數組的對象通過NSArray*類型的屬性公開它。觀察員觀察這個屬性。只要擁有該數組的對象重新創建它,它就會將該屬性設置爲新的NSArray,然後在所有觀察者上觸發KVO。

或者,您可以實現屬性的indexed accessor patterns