2010-10-31 5 views
33

C'est vraiment une question stupide, mais je ne sais vraiment pas comment. J'ai une classe utilitaire et j'ai besoin de définir certaines variables prédéfinies. Voici à quoi ressemble ma classe.Comment créer une NSRange statique?

#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 

Le compilateur me dire la deuxième et la troisième lignes sont erreur:

initializer is not constant.

Quelle est la meilleure pratique de définir les variables?

Répondre

61

NSRange est un c-struct plaine de sorte qu'il peut être initialisé de la façon suivante:

NSRange HEADER_VERSION = {0, 4}; 

ou

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

Voir la section Designated inits du manuel gcc pour plus de détails

+1

Soit dit en passant, icespace , aucun d'entre eux est statique. Pour déclarer une variable statique, vous devez mettre 'static' devant. –

+0

Ce dernier style est-il pris en charge sous LLVM? – Richard

+0

Il est bien compilé dans la dernière version de xcode ... – Vladimir

Questions connexes