2013-02-19 29 views
8
@interface Connections() 
{ 
    static Connections *this; 
} 
@end 

Các mảnh trên mã trong tập tin .m ném biên dịch lỗiObjective C - Tuyên bố Lỗi - xin giải thích

tên Loại không cho phép lớp lưu trữ được quy định

tại cùng lúc khi

static

từ khóa bị xóa nó hoạt động tốt - điều hiển nhiên. Mục đích: Tôi muốn ví dụ "Kết nối" tĩnh và riêng tư.

Tại sao hành vi này, vui lòng trợ giúp.

Trả lời

18

Bạn không thể khai báo các biến cấp lớp trong các lớp Objective-C; thay vào đó, bạn cần phải "ẩn" chúng trong tệp triển khai, thường cho chúng static -scope để chúng không thể truy cập được từ bên ngoài.

Connections.m:

#import "Connections.h" 

static Connections *_sharedInstance = nil; 

@implementation Connections 

... 

@end 

Và nếu điều này là một singleton, bạn thường xác định accessor lớp cấp để tạo ra các singleton khi sử dụng đầu tiên:

+ (Connections *)sharedInstance 
{ 
    if (_sharedInstance == nil) 
    { 
     _sharedInstance = [[Connections alloc] init]; 
    } 
    return _sharedInstance; 
} 

(và bạn sẽ cần thêm tuyên bố vào tệp .h):

+ (Connections *)sharedInstance; 
+0

nghĩa là các lớp objC chỉ có thể bị từ chối. của ivars, phải không? – Futur

+1

@Futur Vâng, đúng vậy. – trojanfoe

+0

cảm ơn bạn rất nhiều :) – Futur

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