那麼,我已經學習Objective-C了一段時間了,我不明白爲什麼創建一個NSArray會對你有益。這只是一些東西的集合嗎?爲什麼你不能在沒有製作NSArray的情況下使用它們呢?或者你可以使用它中的對象來實現你的每一個方法(即使它是一個本地ivar)。您如何從Objective-C中創建NSArray中受益?
所以,任何幫助,將不勝感激。多謝你們!
那麼,我已經學習Objective-C了一段時間了,我不明白爲什麼創建一個NSArray會對你有益。這只是一些東西的集合嗎?爲什麼你不能在沒有製作NSArray的情況下使用它們呢?或者你可以使用它中的對象來實現你的每一個方法(即使它是一個本地ivar)。您如何從Objective-C中創建NSArray中受益?
所以,任何幫助,將不勝感激。多謝你們!
很多時候,您看到的NSArray
是NSMutableArray
在幕後工作的前沿。
將它作爲NSArray
作爲NSArray
的接口進行計費只是一種確保無法從無操縱的方式進行操作,這可能會產生適度的災難性後果。 (因此,從對象要求的NSArray
時,你通常會得到內部使用的NSMutableArray
的副本。)
理解爲什麼創建NSMutableArray
是有益的,就留給讀者做練習。
你可以把每一個「項目」的實例變量,你需要:
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;
不同的上下文。
當您使用NSString
時,它通常用於單個值。這很簡單。
的NSArray
如果你想遍歷多個鍵/值,使用NSArray
。不可能通過NSStrings
循環,因爲它們沒有NSArray
所做的順序結構。
爲什麼使用NSString
這將是愚蠢的每次叫你剛剛保存的值時myArray[0]
和foo[0]
。的NSString比NSArray的簡單,因爲你可以輕鬆地設置一個GUI元素的值(而不必調用myArray[0
])
爲什麼要使用的NSArray
它比NSString
更加靈活,因爲NSArray
可以容納多個值,這在某些情況下可能需要。
權衡利弊
優點(NSArray
):
可以使代碼更清潔(調用myArray[1]
和myArray[0]
代替mystring
和foo
)
簡化存儲管理(更容易釋放一個NSArray
比很多NSStrings
)
缺點(NSArray)
:
可以使你的代碼非常複雜的(是上myArray[0
]或1?)
可能很難知道是陣列中的數據類型(如果它是一個NSString
,它總是會作爲一個字符串,數組可以容納許多不同類型的數據)。你不會使用50塊紙巾從淋浴中吹乾,而是使用毛巾。
所以它歸結爲一件事。你使用什麼樣的環境?
我猜NSArray。呵呵,謝謝! – taevanbat 2010-11-10 10:05:58
我想他正在問爲什麼一個普通的可變數組是有用的。 – zoul 2010-11-09 10:37:26
@zoul:我懷疑這一點。數組的使用場景通常是不言而喻的。 – 2010-11-09 10:38:44
也許不適合13歲的孩子。 – zoul 2010-11-09 10:40:08