任何类都可以访问的全局变量



我想创建一个全局变量(基本上是一个标志变量),目标C中的任何类都可以修改和访问它?任何例子都值得赞赏。

Singleton模式。

http://www.galloway.me.uk/tutorials/singleton-classes/

始终通过"sharedManager"消息引用对象,这将创建一个新对象或为您提供现有对象。

目标C是ANSI C的严格超集,因此用于创建和使用普通C全局变量的步骤可以在目标C中使用。

在一个.m文件中,在任何类接口、方法或子例程范围之外,声明或实例化全局变量(如果不希望它以垃圾值开头,则初始化它):

BOOL myGlobalFlag = NO;

为了使这些全局变量易于找到(您可能需要找到它们,因为全局变量的使用被认为涉及某些类型的错误的风险更高),请将它们放在文件的顶部,在任何所需的include之后。或者将所有全局变量放在一个易于查找的中心文件中,例如App Delegate、包含main()的文件,或者只包含所有全局变量的文件,例如项目中包含的my_apps_globals.c。

在属于要访问此变量的任何类、.m或.c文件的至少一个.h文件中,以及在任何类接口或结构定义之外,声明此变量为可外部访问:

extern BOOL myGlobalFlag;

然后在应用程序中的任何方法或子程序中使用该变量,该方法或子程序包括上述任何头文件。

-(void)dummyMethod {
  if (myGlobalFlag) NSLOG(@"the Flag is set!!!");
}

请记住,Objective-C有好的旧"C"在幕后运行。因此,您可以在Objective-C中创建一个全局变量,就像在C.中一样。

检查此项。在appname.pch文件中导入一些类,比如应用程序委托,因为它很容易从应用程序单例访问。在那里添加一张类似的纸条

#define MY_APP_DELEGATE  (((MYAppDelegate *)[UIApplication sharedApplication].delegate))

并且从任何类都以这种方式使用委托变量:

int val1 = MY_APP_DELEGATE.myvar;
MY_APP_DELEGATE.myvar = 1;

最新更新