我想创建一个全局变量(基本上是一个标志var),它可以被Objective C中的任何类修改和访问?任何例子都表示赞赏。
答案 0 :(得分:2)
单身人士模式。
http://www.galloway.me.uk/tutorials/singleton-classes/
始终通过“sharedManager”消息引用该对象,该消息将创建一个新对象或为您提供现有对象。
答案 1 :(得分:2)
Objective C是ANSI C的严格超集,因此用于创建和使用普通C全局变量的步骤可以在Objective C中使用。
在一个.m文件中,在任何类接口,方法或子例程范围之外,声明或实例化您的全局变量(如果您不希望它以垃圾值开头,则初始化它):
BOOL myGlobalFlag = NO;
为了使这些全局变量易于查找(您可能需要找到它们,因为全局变量的使用被认为更有可能涉及某些类型的错误),请将它们放在文件的顶部,在任何必要的包括之后。或者将所有全局变量放在一个易于查找的中心文件中,例如App Delegate,包含main()的文件,或仅包含所有全局变量的文件,例如项目中包含的my_apps_globals.c。
在属于任何类,.m或.c文件的至少一个.h文件中,如果要访问此变量,并且在任何类接口或结构定义之外,请将此变量声明为可从外部访问:
extern BOOL myGlobalFlag;
然后在应用程序的任何位置使用任何方法或子例程中的变量,其中包含上述任何头文件。
-(void)dummyMethod {
if (myGlobalFlag) NSLOG(@"the Flag is set!!!");
}
答案 2 :(得分:1)
请记住,Objective-C有很好的旧“C”在幕后运行。因此,您可以像在C中一样在Objective-C中创建一个全局变量。
答案 3 :(得分:1)
检查一下。在appname.pch文件中导入一些类,比如应用程序委托,因为它很容易从应用程序单例访问。像那样添加一个脚本
#define MY_APP_DELEGATE (((MYAppDelegate *)[UIApplication sharedApplication].delegate))
并且从任何类以这种方式使用委托变量:
int val1 = MY_APP_DELEGATE.myvar;
MY_APP_DELEGATE.myvar = 1;