如何定义一个全局variables,可以在我的应用程序的任何地方访问?
可能重复:
全局intvariables目标c
我想创build一个全局variables。 我想在任何地方访问这个variables。
Java的等价物:
static var score:int = 0;
例如,如果我将一个全局variables定义到Game类中。 如何访问这个全局variables?
Game.score ?
如果您的应用程序中有多个视图,那么您希望每个视图都有一个可访问的variables,您应该始终创build一个Model / Data类并在其中定义该variables。 像这样的东西:
//DataClass.h @interface DataClass : NSObject { NSString *str; } @property(nonatomic,retain)NSString *str; +(DataClass*)getInstance; @end //DataClass.m @implementation DataClass @synthesize str; static DataClass *instance = nil; +(DataClass *)getInstance { @synchronized(self) { if(instance==nil) { instance= [DataClass new]; } } return instance; }
现在在你的视图控制器中,你需要调用这个方法:
DataClass *obj=[DataClass getInstance]; obj.str= @"I am Global variable";
这个variables将被每个视图控制器访问。 你只需要创build一个Data类的实例。
Objective-C不直接支持“类variables”。 相反,您可以创build一个对类文件范围有效的variables,并使用类方法访问它。
// outside the implementation static int score = 0; // static means it is only accessible from the current file @implementation Game + (int)score { return score; } + (void)setScore:(int)newScore { score = newScore; }
在iOS项目中实现全局variables的首选方法(尽pipe这些不是全局variables)是在应用程序委托中创build一个属性,然后从每个类中访问该属性。
编辑:重新读你的问题,它看起来像我误解了你的问题,而ughoavgfhw的答案可能是你在找什么。 他是正确的,在Objective-C中没有类variables,所以你必须创build一个常规的C静态variables,然后创build类方法(用+
来表示而不是用-
)来设置和获取。
虽然一般情况下,当我需要一个应用程序中的“全局”variables时,我创build单体类来容纳它们及其相关方法(所以应用程序委托不会与无关的属性溢出),或者如果它是一个较小的项目,我只是使用应用程序委托(这也是一个单身类),而不是单独的单身人士。 虽然静态variables加上class setter / getter方法没有问题,但是如果这样做能更好地满足您的需求。