数组类型'int [16]'不可分配

时间:2013-03-04 18:02:39

标签: ios objective-c

我正在使用最新的SDK开发iOS应用程序。

我想在.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

如何解决此错误?

2 个答案:

答案 0 :(得分: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};

数组不是可分配的左值。

答案 1 :(得分:7)

如果您只想初始化数组:

int _cars[16] = {0};

删除额外的零是安全的,编译器会将它们弄清楚。在C中分配整个数组是不可能的,这就是编译器在你的情况下抱怨的原因。它只能初始化它们,并且当作为声明的一部分完成时,赋值仅被认为是初始化。