Как я могу создать пустой массив в объекте C и присвоить ему значение по одному?

17

В Java я могу это сделать:

int[] abc = new int[10];
for(int i=0; i<abc.length; i++){
   abc[i] = i;
}

Как я могу реализовать аналогичную вещь в Objective C?

Я вижу некоторый ответ, используя NSMutableArray, wt отличается от этого и NSArray?

    
задан Tattat 25.02.2010 в 16:26
источник

3 ответа

16

Попробуйте что-то вроде этого.

#import <foundation/foundation.h>
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableArray *myArray = [NSMutableArray array];
    [myArray addObject:@"first string"];
    [myArray addObject:@"second string"];
    [myArray addObject:@"third string"];
    int count = [myArray count];
    NSLog(@"There are %d elements in my array", count);
    [pool release];
    return 0;
}

Цикл будет выглядеть так:

NSString *element;
int i;
int count;
for (i = 0, count = [myArray count]; i < count; i = i + 1)
{
   element = [myArray objectAtIndex:i];
   NSLog(@"The element at index %d in the array is: %@", i, element);
}

См. CocoLab

    
ответ дан Curtis Inderwiesche 25.02.2010 в 16:28
источник
  • Это не отвечает на то, как присвоить определенному индексу. Только, как читать от него. –  Tim Bodeit 13.04.2014 в 16:53
10
NSMutableArray* abc = [NSMutableArray array];
for (int i = 0; i < 10; ++ i)
   [abc addObject:[NSNumber numberWithInt:i]];
return abc;

Здесь

  • NSMutableArray - это «изменяемый» тип массива. Существует также массив NSArray с постоянным массивом. В отличие от C ++, массив ObjC не вводится. Вы можете хранить любые объекты ObjC в NSArray.
  • -addObject: добавляет ObjC в конце массива.
  • Так как NSArrays может хранить только ObjC, вам нужно сначала «вставить» целое число в NSNumber.

Это больше похоже на код C ++

std::vector<int> abc;
for (int i = 0; i < 10; ++ i)
   abc.push_back(i);
return abc;
    
ответ дан kennytm 25.02.2010 в 16:27
источник
3
  

Я вижу некоторый ответ, используя   NSMutableArray, отличается от   это и NSArray?

NSArray неизменный : его нельзя изменить. NSMutableArray является подклассом, который изменен, и добавляет методы в интерфейс массива, позволяющий манипулировать его содержимым. Это образец, который можно увидеть во многих местах по всему Какао: NSString , NSSet и NSDictionary являются особенно частыми примерами, которые являются неизменяемыми объектами с изменяемыми подклассами.

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

    
ответ дан Sixten Otto 25.02.2010 в 16:38
источник