2013-03-04 12 views
6

最新のSDKを使用してiOSアプリケーションを開発しています。配列型 '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

+0

配列がインスタンス変数の場合は、 'alloc'メソッドによって自動的に0に初期化されます([この質問]を参照してください(http://stackoverflow.com/questions/990817/are-ints-always-initialized-to -0))。アレイの内容を確認して確認してください。 – zoul

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

+0

インスタンス変数である必要はありません。デフォルトではゼロに初期化されます。 –

関連する問題