Как добавить значения в массив в Objective-C - PullRequest
28 голосов
/ 13 сентября 2010

Я делаю это:

for(int i=0;i>count;i++)
{
    NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil];
    NSLog(@"%i",temp);
}

Возвращает мне 0,1,2,3 .... считая по одному, но я хочу массив с добавлением этих значений {0,1,2,3,4,5 ...}.Это не имеет большого значения, но я не могу найти его.Я новичок в iPhone.

Ответы [ 3 ]

65 голосов
/ 13 сентября 2010
NSMutableArray *myArray = [NSMutableArray array];

for(int i = 0; i < 10; i++) {
   [myArray addObject:@(i)];
}

NSLog(@"myArray:\n%@", myArray);
12 голосов
/ 13 сентября 2010

Этот код не выполняет то, что вы хотите, по нескольким причинам:

  1. NSArray не является «изменяемым» классом, то есть он не предназначен для изменения после создания. Изменяемая версия - NSMutableArray, что позволит вам добавлять значения.

  2. Вы не можете добавить примитивы типа int в класс NSArray или NSMutableArray; они только держат предметы. Класс NSNumber предназначен для этой ситуации.

  3. Вы теряете память каждый раз, когда выделяете массив. Всегда сопоставляйте каждый вызов alloc с соответствующим вызовом release или autorelease.

Код, который вы хотите, выглядит примерно так:

NSMutableArray* array = [[NSMutableArray alloc] init];
for (int i = 0; i < count; i++)
{
    NSNumber* number = [NSNumber numberWithInt:i]; // <-- autoreleased, so you don't need to release it yourself
    [array addObject:number];
    NSLog(@"%i", i);
}
...
[array release]; // Don't forget to release the object after you're done with it

Мой совет вам прочитать Руководство по основам какао , чтобы понять некоторые основы.

1 голос
/ 10 января 2017

Более короткий путь, который вы могли бы сделать:

NSMutableArray *myArray = [NSMutableArray array];

for(int i = 0; i < 10; i++) {

   [myArray addObject:@(i)];
}

NSLog(@"myArray:\n%@", myArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...