2013-03-04 28 views
6

Tôi đang phát triển một ứng dụng iOS với SDK mới nhất.Loại mảng 'int [16]' không được gán

Tôi muốn làm điều này trên một tập tin .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}; 
    } 

    ... 
} 

Nhưng tôi nhận được lỗi sau:

Array type 'int [16]' is not assignable 

Làm thế nào tôi có thể khắc phục lỗi này?

Trả lời

6

Nếu bạn chỉ muốn để khởi tạo mảng:

int _cars[16] = {0}; 

Đó là an toàn để thả các số không thêm, trình biên dịch sẽ tìm chúng ra. Không thể gán toàn bộ mảng trong C, đó là lý do trình biên dịch phàn nàn trong trường hợp của bạn. Chỉ có thể khởi tạo chúng và nhiệm vụ chỉ được coi là khởi tạo khi được thực hiện như là một phần của tuyên bố.

+0

Tôi đã cập nhật câu hỏi của mình với các chi tiết tốt hơn. – VansFannel

+0

Nếu mảng là một biến cá thể, nó sẽ được khởi tạo tự động bằng phương thức 'alloc' (xem [câu hỏi này] (http://stackoverflow.com/questions/990817/are-ints-always-initialized-to -0)). Hãy xem nội dung của mảng để đảm bảo. – zoul

8

Mục tiêu-C++ không khác với C, Mục tiêu-C hoặc C++ trong trường hợp này. Bạn phải khởi tạo một mảng khi bạn khai báo nó:

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

Mảng không phải là giá trị được gán.

+0

Nhưng tôi không thể làm điều đó trên @interface. – VansFannel

+0

Bạn không cần phải là một biến mẫu. Nó sẽ không được khởi tạo theo mặc định. –

Các vấn đề liên quan