2012-03-16 59 views
-2

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

+6

你甚至没有考虑过使用谷歌搜索,你呢? – PengOne 2012-03-16 16:15:46

+0

将属性添加到您的应用程序委托。 – Jeremy 2012-03-16 16:16:59

+0

[Objective-C中的全局变量]的可能重复(http://stackoverflow.com/questions/1113980/global-variables-in-objective-c)以及http://stackoverflow.com/questions/5098990/ in-objective-c-how-do-you-declare-use-a-global-variable,http://stackoverflow.com/questions/7081245/global-variables-in-xcode和http://stackoverflow.com/questions/3601341/iphone-global-variable – 2012-03-16 16:38:49

回答

1

请记住,Objective-C在封面下运行良好的旧“C”。因此,您可以像在C中一样在Objective-C中创建全局变量。

1

选中此项。在appname.pch文件中导入一些类,比如应用程序委托,因为它很容易从应用程序单例访问。有添加纸条像

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

,并从任何类使用委托变量是这样的:

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

目标C是ANSI C严格的超集,所以用来创建和使用步骤在目标C中可以使用普通的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!!!"); 
}