2010-10-31 12 views
33

Es realmente una pregunta estúpida, pero realmente no sé cómo hacerlo. Tengo una clase de utilidad y necesito definir algunas variables predefinidas. Así es como se ve mi clase.Cómo crear un NSRange estático?

#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 

El compilador me dicen La segunda y la tercera son de error:

initializer is not constant.

¿Cuál es la mejor práctica de definir las variables?

Respuesta

61

NSRange es un c-struct llanura por lo que se puede inicializar la siguiente manera:

NSRange HEADER_VERSION = {0, 4}; 

o

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

Ver Designated inits sección del manual de gcc para más detalles

+1

Incidentalmente, icespace , ninguno de estos es estático. Para declarar una variable estática, debe poner 'static' delante de ella. –

+0

¿El último estilo es compatible con LLVM? – Richard

+0

Está bien compilado en la última versión de xcode ... – Vladimir

Cuestiones relacionadas