2010-06-17 46 views

回答

4

它們是簡便的方法,可以更快速地獲得自動釋放對象,而不必爲了得到相同的結果而寫更多的東西。

順便說一句,NSArray沒有一個名爲arrayWithObjects的實例方法,它們只是類方法。

+0

不是「+」表示arraryWithObjects是類方法嗎?我不認爲我理解爲什麼我暗示它是一個實例方法 – Devoted 2010-06-17 14:25:49

+0

@Devoted,'[array arrayWithObjects]'試圖調用一個不存在的實例方法。 – 2010-06-17 14:26:41

+1

您無法在Obj-C中的實例上調用類方法。正確的調用看起來像'[NSArray arrayWithObjects:nil];' – kubi 2010-06-17 14:27:36

1

雅各布的答案是正確的(所以接受那個),但我會補充說Cocoa框架有一個叫做類集羣的引人注目的東西。這個想法是,雖然你可能會打電話給[NSArray array],但你得到的對象實際上是NSArray的一個私有子類,它針對你的具體情況進行了優化。這些便利的方法可以給NSArray類提供一個「提示」,指出要使用哪個類。

例如,如果您致電[NSArray array],您會得到一個空的不可變陣列。那麼,一個空的不可變數組有多少個不同的值?只有一個。所以在幕後,Cocoa可以返回相同的空NSArray給每個[NSArray array]的調用,這樣它只需要分配其中的一個。這是一個可以節省一些內存的漂亮優化。

現在,這實際上是一個你不需要關心的實現細節,但是要考慮的是你應該使用最接近你想要的結果的構造函數,特別是對於像數組,集合,和字典,因爲蘋果公司實施了一系列優化,使您的應用程序更好地工作。

相關問題