2010-07-27 4 views
-1

Je déclare une variable et quelques méthodes de la classe mondiale comme NSObjectdéclare variable globale en classe NSObject (objectif C)

@interface classGlobal : NSObject { 
    NSString *myGuid; 
} 

@property(nonatomic,assign)NSString *myGuid; 

et i dans la classe synthétiser .m. mais quand j'essaye d'accéder à la variable myGuid dans la même classe (classGlobal.m) alors il montre l'erreur "instance variable" myGuid 'accédé dans la méthode de classe ". Alors s'il vous plaît suggérer comment je résous ce problème.

Répondre

1

Le compilateur se plaint que vous utilisez dans une portée, où il n'est pas accessible/défini. La déclaration dans la partie interface ne pas définir une variable globale, mais une variable de membre d'instance. Si vous avez besoin d'une variable globale (par exemple, becaue vous devez y accéder à partir d'une méthode de classe déclarée avec + au lieu de -), déclarer comme d'habitude dans votre fichier .m:

MyClass.m: 

    static NSString* myGuid = nil; 

    + (void) someClassMethod { 
     if(myGuid == nil) ... 
    } 
3

Cela signifie que les variables d'instance ne sont pas accessibles à partir des méthodes de classe. Une méthode de classe est déclarée en utilisant un + au lieu d'un -. Si vous avez besoin d'utiliser des variables globales, je vous suggère de jeter un oeil à this question qui répond assez bien. Et voici another one.