2013-03-04 13 views
6

Zajmuję się tworzeniem aplikacji na iOS z najnowszym pakietem SDK.Typ tablicy "int [16]" nie jest przypisywany

Chcę to zrobić na .mm pliku:

@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}; 
    } 

    ... 
} 

Ale pojawia się następujący błąd:

Array type 'int [16]' is not assignable 

Jak można naprawić ten błąd?

Odpowiedz

6

Jeśli chcesz tylko do zainicjowania tablicy:

int _cars[16] = {0}; 

To bezpieczne upuść dodatkowych zer, kompilator będzie zrozumieć je. Nie można przypisać całych tablic w C, dlatego kompilator narzeka w twoim przypadku. Można je tylko zainicjować, a przypisanie jest uważane za inicjowanie tylko wtedy, gdy jest wykonywane jako część deklaracji.

+0

Mam zaktualizowane moje pytanie z lepszymi szczegółami. – VansFannel

+0

Jeśli tablica jest zmienną instancji, powinna być automatycznie inicjalizowana do zera metodą "alloc" (patrz [to pytanie] (http://stackoverflow.com/questions/990817/are-ints-always-initialized-to -0)). Spójrz na zawartość tablicy, aby się upewnić. – zoul

8

Objective-C++ w tym przypadku nie różni się od C, Objective-C lub C++. Musisz zainicjować tablicę, gdy ją zadeklarujesz:

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

Tablic nie można przypisać do wartości l.

+0

Ale nie mogę tego zrobić na @interface. – VansFannel

+0

Nie musisz, jeśli jest to zmienna instancji. Domyślnie będzie to zero inicjowane. –

Powiązane problemy