Настройка состояния массива по умолчанию - PullRequest
1 голос
/ 20 апреля 2011

У меня есть массив, который мне нужно создать с заранее определенным количеством объектов с нулевым значением, которые будут изменены позже.

Я делаю это следующим образом:

NSMutableArray *myArray = [[[NSMutableArray alloc] initWithObjects:
    [NSNumber numberWithInt:0], 
    [NSNumber numberWithInt:0], 
    [NSNumber numberWithInt:0],
    . . .
    nil]
    autorelease];

Однако у меня есть 20 заполнителей с нулевым значением, которые мне нужно создать, поэтому я думаю сделать это следующим образом:

NSMutableArray *myArray = [[[NSMutableArray alloc] init] autorelease];

for (NSUInteger x = 0; x < 20; ++x) {
    [myArray addObject:[NSNumber numberWithInt:0]];
}

В первом примере nil помещается в конец массива, вво-вторых, это не так.Есть ли разница?Кроме того, есть ли преимущество в одном способе сделать это по сравнению с другим?

1 Ответ

0 голосов
/ 20 апреля 2011

Нет, nil не помещается в конец массива. На самом деле, nil не является действительным членом коллекции в Какао. Он просто используется в качестве разделителя списка аргументов здесь. Практической разницы между двумя опубликованными вами вариантами нет (кроме autorelease, который вы используете в первом и, конечно, пропускаете во втором примере).

Я подозреваю, что первый будет немного быстрее (и вы могли бы оптимизировать второй, используя initWithCapacity:), но это не будет иметь заметного значения, учитывая небольшой размер массива.

Обратите внимание, что вы также можете использовать [NSNull null] для указания объекта-заполнителя в коллекции. Это зависит от вашего конкретного случая использования, если это будет лучше, чем использование числа 0.

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