10

我正在使用最新的 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

我该如何解决这个错误?

4

2 回答 2

10

如果您只想初始化数组:

int _cars[16] = {0};

删除多余的零是安全的,编译器会找出它们。不可能在 C 中分配整个数组,这就是编译器在您的情况下抱怨的原因。只能初始化它们,并且仅当作为声明的一部分完成时,分配才被认为是初始化。

于 2013-03-04T18:04:59.710 回答
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};

数组不是可分配的左值。

于 2013-03-04T18:05:23.520 回答