你在正確的軌道上。
Cocoa的集合類 - 它們都具有可變不可變的變體 - 是:
- 的NSArray:有序的,可以多次
- 的NSDictionary包含的對象:從按鍵無序,映射值,鑰匙被複制
- NSSet中:無序的,可含有一個對象一次
- NSCountedSet:無序的,可以包含一個對象多次
不可變的變體有助於提高效率。具有可變變體的類的訪問器的標準模式是複製而不是保留。這是編纂在@property
機制,通過對房地產copy
屬性:
// Department.h
@interface Department : NSObject
@property (readwrite, copy) NSSet *employees;
@end
這意味着,如果你傳遞一個可變數組的東西,需要一個數組,它會被複制,如果你傳遞到別的地方,它會被再次複製。訣竅在於,「複製」一個不可變的對象實際上只是保留了它,所以你只需要爲第一個副本命中。你可能想無論如何第一次做一個副本,所以你不會傳遞一個可變數組到其他東西,然後改變它背後的任何你傳遞給它。
對於Mac OS X上的Cocoa,我也強烈建議你看看Core Data。這是您可能從.NET/ADO/etc中使用的「數據集」模式的替代方案。使用核心數據,您不會「獲取所有客戶」,然後通過該收集。相反,您可以查詢您關心的客戶,並且在您遍歷所查詢對象的關係時,其他對象將自動被拉入。
核心數據還爲您提供了像實體的可視化建模,屬性獲取器的自動生成,對從一個模式版本到另一個模式版本的遷移的細粒度控制等功能。
此外,您可能希望查看SQLLite周圍的輕量級包裝,以便從數據庫更容易地創建對象。 – 2008-09-15 05:50:29