Objective-C中是否可以使用Object数组?

时间:2010-10-05 12:29:08

标签: objective-c arrays

我对Objective-C很新。创建对象数组时遇到问题。在java中,可以创建对象数组,并可以直接访问各个实例。

例如,

SomeClass[] instance = new SomeClass[10];
instance[i].var=10;

在Objective-C中有没有办法做到这一点?我可以使用索引直接访问对象数组中的实例变量吗?一个例子是更多的帮助。提前致谢

5 个答案:

答案 0 :(得分:7)

使用Foundation Framework(如果您使用的是Objective-C,几乎肯定会这样):

NSString *object1 = @"an object";
NSString *object2 = @"another object";
NSArray *myArray = [NSArray arrayWithObjects:object1, object2, nil];

NSString *str = [myArray objectAtIndex:1];

此处,str将是对象2(包含another object)的引用。请注意,nil'终止'数组中的对象列表,并且是必需的。如果你想要一个可变(可修改)的数组:

NSString *object1 = @"an object";
NSString *object2 = @"another object";
NSMutableArray *myMutableArray = [NSMutableArray array];

[myMutableArray addObject:object1];
[myMutableArray addObject:object2];

答案 1 :(得分:6)

您可以同时使用NSArray(由其他答案记录)和标准C数组。在后一种情况下,你会这样做:

id numbers[10];
NSInteger i;
for (i = 0; i < 10; i++) {
  numbers[i] = [NSNumber numberWithInteger: i];
}

请注意,与Java不同,没有类型id[]NSString[]或任何类型。原始数组与C中的相同:指针和光标。

答案 2 :(得分:2)

SomeClass[] instance = new SomeClass[10];
instance[i].var=10;

您在Objective-C中最接近上述内容的方式如下:

NSMutableArray* instances = [[NSMutableArray alloc] init];
[instances addObject: foo];
[instances addObject: bar];
// etc. mutable arrays grow as you add elements to them

[[instances objectAtIndex: i] setVar: 10];

您添加到阵列的对象是什么类型的?好吧,只要他们回复您选择发送的消息就没关系。因此,只要实例数组中索引i处的对象响应选择器-setVar:并将一个整数作为其参数,上面的代码就可以了。

答案 3 :(得分:0)

答案 4 :(得分:0)

对Objective-C类的引用只是指针,因此您只需创建一个c数组指针:

NSNumber* numbers[10];
for (int i=0; i<10; i++)
{
    numbers[i] = [NSNumber numberWithInt:i];
}
NSLog(@"%@ %@ %@ %@ %@ %@ %@ %@ %@ %@", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4], numbers[5], numbers[6], numbers[7], numbers[8], numbers[9]);
//0 1 2 3 4 5 6 7 8 9

但是,最好使用NSArray