2010-10-31 57 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