Comment initiez-vous une constante dans un fichier d'en-tête?
Par exemple: P>
@interface MyClass : NSObject { const int foo; } @implementation MyClass -(id)init:{?????;}
3 Réponses :
pour les constantes "publiques", vous le déclarez comme externe code> dans votre fichier d'en-tête (.h) et initialisez-le dans votre fichier de mise en œuvre (.m).
// File.m
int const foo = 42;
Et si j'ai besoin Typedef ns_enum code>?
Les classes de l'objectif C ne soutiennent pas les constantes en tant que membres. Vous ne pouvez pas créer une constante comme vous le souhaitez.
Le moyen le plus proche de déclarer une constante associée à une classe est de définir une méthode de classe qui le renvoie. Vous pouvez également utiliser l'extérieur pour accéder directement aux constantes. Les deux sont démontrés ci-dessous: P>
// header @interface Foo { } +(Foo*) fooConstant; @end // implementation @implementation Foo +(Foo*) fooConstant { static Foo* theConstant = nil; if (theConstant == nil) { theConstant = [[Foo alloc] initWithStuff]; } return theConstant; } @end
Ajouté un autre morceau que je viens de penser à
agréable. Il serait peut-être intéressant de spécifier que le modèle que vous avez écrit s'appelle Singleton et est souvent utilisé pour partager des applications supplémentaires. Un bel exemple dans iPhone Dev est la classe AppDelegate.
Un moyen simple de trouver des constantes de type de valeur telles que les entiers est d'utiliser le Enum Hack comme allongé par incroyons. un avantage à ce sujet sur l'utilisation de Une autre méthode consiste à utiliser extern code> est que tout est résolu au moment de la compilation, donc il n'y a pas de mémoire nécessaire pour contenir le Variables. P>
statique const code>, ce qui était de remplacer le hack enum en C / C ++. P>
// File.h
typedef NS_ENUM(NSInteger, SKContants) {
SKFoo = 1,
SKBar = 42,
};