7
votes

Où dois-je déclarer des variables statiques?

I.e. Je veux apporter cela dans mon code:

static BOOL MyConstantBool = YES;


3 Réponses :


10
votes

Si vous souhaitez définir une variable globale, peu importe l'endroit où vous le mettez (à l'intérieur ou à l'extérieur de @Implementatation). Dans ce contexte, statique signifie que la variable n'est visible que de cette unité de compilation (fichier .m).

Il existe également des variables statiques, qui sont définies dans les fonctions. Ils travaillent comme des variables globales, mais ne sont visibles qu'à partir de la portée de la fonction.


0 commentaires

1
votes

Si c'est après le bloc code> @Implementatation code>, vous ne pouvez pas l'utiliser dans le bloc code> @Implementatation code> (sauf s'il a été renvoyé ailleurs ailleurs en utilisant extern code>). Voici comment je le fais:

//Constants.h
extern BOOL MyConstantBool;
extern NSString* MyConstantString;


//Constants.m
#import "Constants.h"
BOOL MyConstantBool = YES;
NSString* MyConstantString = @"Hello, world!";


//SomeOtherFile.m
#import "Constants.h" 
//you can now use anything declared in Constants.h 


1 commentaires

Ne peut pas être statique et extern en même temps.



0
votes

Les globaux peuvent aller à peu près où que vous souhaitiez; Je viens de le mettre dans n'importe quel endroit donne un sens stylistiquement. Je préfère voir des globaux près du sommet des fichiers source, personnellement.

Bien que vous puissiez mettre la définition dans un fichier d'en-tête, je ne le recommande pas. Mettre toute forme de définition dans un fichier d'en-tête peut entraîner des erreurs de liaison de symboles multiples définies sur la route. Si vous avez besoin de plus d'une unité de compilation pour voir la variable, vous ne pouvez pas le faire statique de toute façon - vous devez le définir dans un fichier de mise en œuvre quelque part et utiliser extern Pour le rendre visible parmi divers fichiers sources.


0 commentaires