【发布时间】:2012-03-16 16:13:47
【问题描述】:
我想创建一个全局变量(基本上是一个标志变量),它可以被 Objective C 中的任何类修改和访问?任何例子都值得赞赏。
【问题讨论】:
-
你甚至没有考虑过用谷歌搜索,对吧?
-
向您的应用程序委托添加一个属性。
标签: objective-c ios xcode global-variables
我想创建一个全局变量(基本上是一个标志变量),它可以被 Objective C 中的任何类修改和访问?任何例子都值得赞赏。
【问题讨论】:
标签: objective-c ios xcode global-variables
单例模式。
http://www.galloway.me.uk/tutorials/singleton-classes/
始终通过“sharedManager”消息引用对象,这将创建一个新对象或为您提供现有对象。
【讨论】:
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!!!");
}
【讨论】:
请记住,Objective-C 隐藏着运行良好的旧“C”。所以你可以像在 C 中一样在 Objective-C 中创建一个全局变量。
【讨论】:
检查这个。在您的 appname.pch 文件中导入一些类,例如应用程序委托,因为它很容易从应用程序单例访问。在那里添加一个脚本,例如
#define MY_APP_DELEGATE (((MYAppDelegate *)[UIApplication sharedApplication].delegate))
任何类都以这种方式使用委托变量:
int val1 = MY_APP_DELEGATE.myvar;
MY_APP_DELEGATE.myvar = 1;
【讨论】: