2008-12-26 27 views
20

我在這裏的目標非常簡單 - 我試圖設置一個NSString到一些測試數據,然後返回類,這應該是NSString。這裏是我的代碼:NSString實例報告它的類爲NSCFString

NSString* stringer = [NSString stringWithFormat: @"Test"]; 
NSLog(@"%@", [stringer class]); 

日誌說,類NSCFString,不NSString。這裏發生了什麼?

回答

30

NSString實際上是一個不同類型的字符串對象的容器類。通常,一個NSString構造函數確實是返回一個實際上類型爲NSCFString的對象,它是Core Foundation CFString結構的一個薄包裝器。

25

的NSString是class cluster,與其他類型的基礎如NSNumber的和的NSArray沿着:

類簇是一個設計圖案 ,基金會框架使得 廣泛使用。類羣集團 一些私人的,具體的 子類公共,抽象 超類。通過這種方式對 中的類進行分組,簡化了面向對象框架的公開的 可見體系結構,而不減少其功能豐富性。 類集羣是基於中討論的 抽象工廠設計模式 「可可設計模式。」

+0

爲什麼蘋果沒有采用這種做法的NSOrderedSet? NSOrderedSet的行爲與接口級別的NSArray完全相同,但他們爲它創建了一個獨立的類。 – Robert 2012-07-09 13:48:11

相關問題