Objective-C,数组初始化

时间:2011-04-12 05:05:58

标签: iphone objective-c xcode nsarray

int num1, num2,num3,num4, i=0;
NSMutableArray *charArray = [[NSMutableArray alloc] init];

while(num1 != 0 && num2 != 0) {
  num3 = num1 & 1;
  num4 = num2 & 1;
  if(num3 != num4) {
    if(num3 == 0) {
      charArray[i++]= '0';
      charArray[i++]= '1';  
    } else {
      charArray[i++]='1';
      charArray[i++]='0';   
    }
  }
  num1 = num1 > 1;
  num2 = num2 > 1;
}

}

我对Objective-c有点新意,有人可以告诉我这有什么不对吗?

2 个答案:

答案 0 :(得分:4)

您不能使用带有NSArrays(和NSMutableArrays)的常规类数组下标。要添加项目,您需要调用addObject方法..即[charArray addObject:obj]

另一个警告是你无法向NSArray添加裸char,它需要是Objective-C类型。您可以使用NSNumber类来包装它。所以你的代码就是:

[charArray addObject:[NSNumber numberWithChar:'0']];
[charArray addObject:[NSNumber numberWithChar:'1']];

但是你仍然可以使用常规C数组并保持代码不被修改,这可能是一个更好的解决方案。即。

char charArray[MAX_SIZE];

答案 1 :(得分:3)

您无法使用C的NSMutableArray语法访问[]

您需要使用-[NSMutableArray addObject:]-[NSMutableArray insertObject:atIndex:]方法。