2010-10-31 58 views
33

這真的是一個愚蠢的問題,但我真的不知道如何去做。 我有一個工具類,需要定義一些預定義的變量。以下是我的課程的外觀。如何創建一個靜態NSRange?

#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 

編譯器告訴我,第二和第三行是錯誤:

initializer is not constant.

什麼是定義變量的最佳做法?

回答

61

NSRange是一個普通的C-結構,因此它可以通過以下方式進行初始化:

NSRange HEADER_VERSION = {0, 4}; 

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

參見gcc手冊的Designated inits部分獲取更多細節

+1

順便提及,icespace ,這些都不是靜態的。爲了聲明一個靜態變量,你必須在它前面加上'static'。 – 2010-10-31 16:59:30

+0

LLVM支持後者風格嗎? – Richard 2013-07-23 13:48:20

+0

它在最新的xcode版本中編譯得很好... – Vladimir 2013-07-23 13:51:45