在我的Cocoa Mac應用程序中,我有一個實例A
,其中包含一組無效的實例B
,該實例組又有一組有序的實例C
。一個實例C
只能在一個實例B
和B
中只能在一個A
中。如何有效地從Cocoa模型的更深層次獲取所有實例?
我想要在實例A
上提供所有實例的無序集合C
。每次我都可以枚舉B
的所有實例,但這對我經常需要做的事情來說似乎很昂貴。但是,我有點擔心,保持跟蹤C
中的實例A
可能會變得很麻煩並且是不一致的原因,例如,如果從B
中刪除實例C
而不是從A
中刪除實例C
。
解決方案1 - 使用在A
一個NSMutableSet
和添加或刪除C
情況下,每當我做B
相同的操作。
解決方案2 - 使用弱在A
引用NSHashTable
。當從B
刪除C
時,它也應該消失A
。
解決方案3 - 使用鍵在A
觀測值跟蹤變化的B
,並相應更新A
一個NSMutableSet
。
解決方案4 - 簡單地遍歷所有實例B
創建一套每當我需要它。
哪種方式最好?有沒有其他的方法,我錯過了?
NB我不會,也不會爲此應用使用CoreData。
你是否對你的代碼進行了簡介?你知道這是你花很多時間的地方嗎?在嘗試優化之前,您應該先進行分析。 – 2010-03-19 09:40:35
我是否正確所有,C的實例在所有數據中都是唯一的? – Vladimir 2010-03-19 14:52:42
不,這段代碼我還沒有分析過,主要是因爲我仍在設計它,而且還有很多配置文件尚未完成。儘管詢問其他人如何實施這一點似乎是一個普遍的問題。 是的,'C'的所有實例都是唯一的。對不起,如果不明確。從邏輯上講,它應該從'C'只在一個'B'中。 – 2010-03-19 17:30:35