Какую пользу вы получаете от создания NSArray в Objective-C? - PullRequest
0 голосов
/ 09 ноября 2010

Ну, я уже некоторое время изучаю Objective-C, и я не понимаю, почему создание NSArray будет полезно для вас.Это просто коллекция некоторых вещей, верно?Почему вы не можете просто использовать их, не создавая NSArray.Или вы можете использовать объекты в нем для реализации каждого из ваших методов (даже если это локальный ивар).

Итак, любая помощь будет принята с благодарностью.Спасибо, ребята!

Ответы [ 3 ]

1 голос
/ 09 ноября 2010

Вы можете создать переменные экземпляра для каждого «элемента», который вам нужен:

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 голосов
/ 09 ноября 2010

Различные контексты.

Когда вы используете 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 салфеток, чтобы вытереться от душа, но использовали бы полотенце.

Так что все сводится к одному.Какой контекст вы используете?

0 голосов
/ 09 ноября 2010

Очень часто NSArray, который вы видите, является фронтом для NSMutableArray, работающего за сценой.

Выставление счета в интерфейсе как NSArray - это просто способ убедиться, что он не можетманипулировать извне, что может иметь умеренно катастрофические последствия.(Таким образом, когда вы запрашиваете NSArray у объекта, вы обычно получаете копию NSMutableArray, используемого для внутреннего использования.)

Понимание того, почему создание NSMutableArray полезно, оставлено в качестве упражнения.читателю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...