В Java я могу сделать это:
int[] abc = new int[10];
for(int i=0; i<abc.length; i++){
abc[i] = i;
}
Как я могу реализовать подобную вещь в Objective C?
Я вижу, что некоторый ответ использует NSMutableArray, вес, отличающийся между этим и NSArray?
Попробуйте сделать что-то вроде этого.
#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
NSMutableArray* abc = [NSMutableArray array];
for (int i = 0; i < 10; ++ i)
[abc addObject:[NSNumber numberWithInt:i]];
return abc;
Здесь,
-addObject:
добавляет объект ObjC в конец массива. На самом деле это больше похоже на код C++
std::vector<int> abc;
for (int i = 0; i < 10; ++ i)
abc.push_back(i);
return abc;
Я вижу ответ при использовании NSMutableArray, чем отличается this от NSArray?
NSArray
является неизменяемым : его нельзя изменить. NSMutableArray
- это изменяемый подкласс, который добавляет методы в интерфейс массива, позволяющие манипулировать его содержимым. Этот шаблон наблюдается во многих местах в Какао: NSString
, NSSet
и NSDictionary
- особенно частые примеры, которые все являются неизменяемыми объектами с изменяемыми подклассами.
Самая большая причина этого - эффективность. Вы можете делать предположения об управлении памятью и безопасности потоков с неизменяемыми объектами, которые вы не можете сделать с объектами, которые могут измениться из-под вас.