Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

#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

Ответ 2

NSMutableArray* abc = [NSMutableArray array];
for (int i = 0; i < 10; ++ i)
   [abc addObject:[NSNumber numberWithInt:i]];
return abc;

Здесь

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

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

std::vector<int> abc;
for (int i = 0; i < 10; ++ i)
   abc.push_back(i);
return abc;

Ответ 3

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

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

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