2010-10-31 30 views
33

Nó thực sự là một câu hỏi ngu ngốc, nhưng tôi thực sự không biết làm thế nào để. Tôi có một lớp tiện ích và cần xác định một số biến được xác định trước. Đây là cách lớp của tôi trông như thế nào.Làm thế nào để tạo một NSRange tĩnh?

#pragma mark File header part definiation (start offset, length) 
NSRange HEADER_VERSION = NSMakeRange(0, 4); /* 0,4 */ 
NSRange HEADER_IDENTIFIER = NSMakeRange(4, 18); /* 4, 18*/ 
... 

@interface ParserUtil : NSObject { 

} 

/*Parse Paper instance from file*/ 
+(Paper*) parsePaper:(NSURL*)file; 
@end 

Trình biên dịch cho tôi biết dòng thứ hai và thứ ba là lỗi:

initializer is not constant.

các thực hành tốt nhất xác định các biến là gì?

Trả lời

61

NSRange là một đồng bằng c-struct để nó có thể được khởi tạo theo cách sau:

NSRange HEADER_VERSION = {0, 4}; 

hoặc

NSRange HEADER_VERSION = {.location = 0, .length = 4}; 

Xem Designated inits phần của gcc tay để biết thêm chi tiết

+1

Ngẫu nhiên, icespace , không cái nào trong số này là tĩnh. Để khai báo một biến tĩnh, bạn phải đặt 'static' ở phía trước nó. –

+0

Kiểu thứ hai có được hỗ trợ theo LLVM không? – Richard

+0

Nó được biên dịch tốt trong phiên bản xcode mới nhất ... – Vladimir

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