2010-11-09 26 views
0

那麼,我已經學習Objective-C了一段時間了,我不明白爲什麼創建一個NSArray會對你有益。這只是一些東西的集合嗎?爲什麼你不能在沒有製作NSArray的情況下使用它們呢?或者你可以使用它中的對象來實現你的每一個方法(即使它是一個本地ivar)。您如何從Objective-C中創建NSArray中受益?

所以,任何幫助,將不勝感激。多謝你們!

回答

0

很多時候,您看到的NSArrayNSMutableArray在幕後工作的前沿。

將它作爲NSArray作爲NSArray的接口進行計費只是一種確保無法從無操縱的方式進行操作,這可能會產生適度的災難性後果。 (因此,從對象要求的NSArray時,你通常會得到內部使用的NSMutableArray的副本。)

理解爲什麼創建NSMutableArray是有益的,就留給讀者做練習。

+0

我想他正在問爲什麼一個普通的可變數組是有用的。 – zoul 2010-11-09 10:37:26

+0

@zoul:我懷疑這一點。數組的使用場景通常是不言而喻的。 – 2010-11-09 10:38:44

+0

也許不適合13歲的孩子。 – zoul 2010-11-09 10:40:08

1

你可以把每一個「項目」的實例變量,你需要:

NSString *str1; 
NSString *str2; 
NSString *str3; 

...但這是很難的工作,一個數組是簡單更方便。如果你想打印所有這些字符串,你會怎麼做?

NSLog(@"%@", str1); 
NSLog(@"%@", str2); 
NSLog(@"%@", str3); 

對數組進行循環不是更容易嗎?

NSArray *strings = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 
for (NSString *str in strings) 
    NSLog(@"%@", str); 

如果你有十個,二十個字符串呢?而如果你不知道你需要多少弦?如果你想把所有這些物品交給其他人呢?你打算一個接一個地通過它們嗎?

- (void) doSomethingWithString1: (NSString*) str1 andString2: (NSString*) str2…; 

或者你願意傳遞一個數組嗎?

- (void) doSomethingWithMyStrings: (NSArray*) strings; 
+0

非常感謝你們!所以,我現在必須知道的是與NSArray有關的方法。並且,再次感謝! – taevanbat 2010-11-10 10:03:15

+0

我認爲你的答案是最好的。非常感謝! – taevanbat 2010-11-10 10:09:41

0

不同的上下文。

當您使用NSString時,它通常用於單個值。這很簡單。

的NSArray

如果你想遍歷多個鍵/值,使用NSArray。不可能通過NSStrings循環,因爲它們沒有NSArray所做的順序結構。

爲什麼使用NSString

這將是愚蠢的每次叫你剛剛保存的值時myArray[0]foo[0]。的NSString比NSArray的簡單,因爲你可以輕鬆地設置一個GUI元素的值(而不必調用myArray[0])

爲什麼要使用的NSArray

它比NSString更加靈活,因爲NSArray可以容納多個值,這在某些情況下可能需要。

權衡利弊

優點(NSArray):

可以使代碼更清潔(調用myArray[1]myArray[0]代替mystringfoo

簡化存儲管理(更容易釋放一個NSArray比很多NSStrings

缺點(NSArray)

可以使你的代碼非常複雜的(是上myArray[0]或1?)

可能很難知道是陣列中的數據類型(如果它是一個NSString,它總是會作爲一個字符串,數組可以容納許多不同類型的數據)。你不會使用50塊紙巾從淋浴中吹乾,而是使用毛巾。

所以它歸結爲一件事。你使用什麼樣的環境?

+0

我猜NSArray。呵呵,謝謝! – taevanbat 2010-11-10 10:05:58