2010-06-17 5 views
3

Je travaille sur une liste de code d'un livre et il a une paire de variables (spécifiquement NSString *) déclarées et initialisées dans @implementation plutôt que dans @interface mais en dehors de tout corps de méthode. Je n'ai jamais vu ça auparavant et je me demande quelle est la différence dans la portée et ainsi de suite.variables déclarées dans @implementation

J'ai jeté un coup d'œil dans le langage de programmation Objective C mais je ne vois rien décrivant l'effet que cela a.

Merci

Andy

+0

va vous envoyer comme exemple de code qui montre ce que vous parlez? – kubi

Répondre

7

Les variables déclarées à l'intérieur @implementation ont une portée mondiale.

Si vous les déclarez "statiques", ils ne sont visibles que depuis les méthodes du même fichier source.

Alors:

@implementation MyClass 

NSString *myString; // global scope, and accessible by all code in your project 

ou

@implementation MyClass 

static NSString *myString; // global scope, but only accessible by code 
          // in this source file 
+0

Génial, merci! – Andy

+0

Je cherchais une réponse et je me suis rendu compte que si c'est dans un bracelet, alors c'est en fait ivar. Voir http://stackoverflow.com/questions/6785765/instance-variables-declared-in-objc-implementation-file – huggie

+0

Êtes-vous sûr de cela? Je ne peux pas le faire fonctionner. Peut-être avez-vous fait de mauvais commentaires? – tGilani

Questions connexes