2013-03-04 150 views
6

我正在开发一个iOS应用程序与最新的SDK。数组类型'int [16]'不可分配

我想这样做对.mm文件:

@interface MyClass() 
{ 
    int _cars[16]; 

    ... 
} 

@end 

@implementation MyClass 

-(id)init 
{ 
    self = [super init]; 

    if (self) 
    { 
     _cars = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
    } 

    ... 
} 

,但我得到了以下错误:

Array type 'int [16]' is not assignable 

我怎样才能解决这个问题?

回答

6

如果你只是想初始化数组:

int _cars[16] = {0}; 

它的安全删除多余的零,编译器将数字出来。在C中不可能分配整个数组,这就是为什么编译器会抱怨你的情况。只能对它们进行初始化,并且只有在作为声明的一部分完成时才将分配视为初始化。

+0

我已经用更好的细节更新了我的问题。 – VansFannel 2013-03-05 07:10:34

+0

如果数组是一个实例变量,它应该由'alloc'方法自动初始化为零(请参见[this question](http://stackoverflow.com/questions/990817/are-ints-always-initialized-to -0))。看看数组的内容来确保。 – zoul 2013-03-05 07:15:08

8

在这种情况下,Objective-C++与C,Objective-C或C++没有区别。当你声明它时,你必须初始化一个数组:

int _cars[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

数组不是可分配的左值。

+0

但是我不能在@interface上做到这一点。 – VansFannel 2013-03-05 07:07:50

+0

如果它是一个实例变量,则不需要。它将默认为零初始化。 – 2013-03-05 07:15:53

相关问题