2014-05-15 60 views
0

在樣式或效率方面,NSMutableArray *myArray = [[NSMutableArray alloc] init];是否比NSMutableArray *myArray = [NSMutableArray new];更正確?Obj-C 2.0中NSMutableArray的實例化

+0

這兩者在功能上是相同的。 「新」可能沒有得到充分利用,主要是出於習慣(還有一點恐懼)。 –

回答

0

實際上它們都用於初始化新對象。新的也會做分配初始化。但蘋果建議首先撥打分配,然後調用init方法。這就是爲什麼我們使用[[NSMutableArray alloc] init]

反正沒有什麼大的區別就在這裏

+1

即使您正在使用'new'。 'alloc'將首先執行,然後僅對其進行初始化。其實兩者都是一樣的 –

0

也不是「比較正確」,而事實上,他們在功能上等同,但allocnew更爲常見,因爲自定義初始化總是通過initWith...風格的方法完成。所以很難說風格正確,但new是肯定不太風格標準在現代Objective-C。

+0

這應該是被接受的答案。現代目標C更喜歡「新」,除非你不應該像任何自定義初始化程序一樣,像'initWith..' –

+0

其實蘋果在去年的WWDC或前一年表示'new'是一個過時的風格。新課程幾乎沒有「新」的方法,蘋果公司高度鼓勵你在自己的課堂上提供他們,他們甚至提供了一個技術原因,爲什麼不應該使用它們,但我不記得它是什麼。 – Mecki

+0

@Mecki:'new'是舊式的,絕對是真的。 'new'是Objective-C更傾向於Smalltalk方向時的過去。但是,「新課程幾乎沒有」新「方法」,這並不是真的。它們像所有其他類一樣繼承NSObject的'new',這相當於alloc + init。如果你可以寫'[[SomeNSObjectSubclass alloc] init]',你可以編寫'[SomeNSObjectSubclass new]'。它沒有被標記爲棄用;它只是風格上的非標準。 – Chuck