2013-03-04 44 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

相關問題