2013-09-24 39 views

回答

0

基本上有三種方式來獲得,例如,一個NSArray:

  1. 標準分配/初始化。從概念上講,至少[NSArray alloc]是對NSArray的類方法的調用,然後結果對象調用init..步驟的特殊形式的實例方法。
  2. [NSArray arrayWithSomethingOrAnother..]。這會調用NSAArray上的一個類方法,該方法在內部執行alloc/init(有幾次曲折),然後根據需要「填充」該對象。
  3. [someObject arrayByDoingSomething..]。這是一個返回NSArray的對象(可能是也可能不是NSArray對象)的實例方法。

實際上有沒有太多的情況下,有重疊之間(2)和(3) - 想不出任何副手爲NSArray的,雖然有針對類似的NSString功能屈指可數。雖然純粹主義者可能更喜歡舊的alloc/init類與arrayWith...類方法,但真正需要在ARC環境中使用NSArray上的alloc/init(儘管它仍然在手動引用計數環境中)。

4

如果您使用ARC,則沒有區別。例如,這些2行返回相同的事情:

[[NSArray alloc] initWithObject:myObject]; 

[NSArray arrayWithObject:myObject]; 

唯一的區別是,後者返回一個autoreleased對象,它必須被如果正在使用ARC同樣的方式處理作爲另一個。如果不是,則應該將retain添加到第二行代碼中,以防您希望返回對象的所有權。

0

您可以使用任何編程語言創建NSArray或字符串,即分配內存 - >將實例變量初始化爲您想要的某種狀態。

可以創建e.g陣列..

的NSArray * myArray的= [[NSArray中的alloc] INIT];

現在你也可以使用一些其他類的方法也讓我們的NSString用於如 的NSString * myString的= [NSString的stringwithformat:@ 「%@ - 這是我的字符串 - %@」,@」 < - 」 @ 「 - >」];

現在使用ARC,它不會有太大的區別,因爲ARC會照顧釋放創建的對象,因爲類方法通常是自動釋放的。