iPhone全局变量?

时间:2010-08-30 14:36:54

标签: iphone objective-c global-variables

我当然有两个带有自己的.h和.m文件的视图。如何在一个视图中声明一个bool(或任何变量)并在另一个视图中使用bale来访问它?

感谢。

3 个答案:

答案 0 :(得分:4)

Objective C是普通ANSI C的超集,因此您可以使用与旧式C完全相同的方式创建和使用全局变量。

在一个.m或.c文件中,输入:

BOOL gMyGlobalBoolVar = NO;  // or YES, depending on whatever initial state is needed

我可能会将它们放在一个集中的单例类中,例如你的appdelegate .m文件,或者放在一个单独的.c文件中,例如myGlobals.c。我通常将这些放在#import / includes之后,但在任何类,方法或函数定义之前,以阐明它们可以在任何对象或函数之外访问。

在要访问gMyGlobalBoolVar的所有类的.h文件中,输入:

extern BOOL gMyGlobalBoolVar;

然后在课堂的任何地方使用它们:

if ( [ self dogHasFleas ] ) { 
  gMyGlobalBoolVar = YES; 
}

全局变量的使用目前并非“政治上正确”,但对于您永远不会尝试发布,重用,扩展或寻找粗糙错误的快速代码,它们的工作方式就像在几乎所有计算机中一样。 50多年前的编程语言。

答案 1 :(得分:0)

您可以只引用包含bool的视图,并使用getter获取变量。

如果你想要app wide变量,你可以将它们放在AppDelegate中,但我强烈建议不要这样做,因为它紧密地结合了类。

答案 2 :(得分:0)

创建数据模型类。在您的应用委托中实例化它,并将其传递给您的视图控制器。使用键值观察来跟踪视图控制器中模型的更改。请在此处查看我的回答:How do I display and calculate numbers from a database on iPhone?

“为什么我不应该使用全局变量呢?这不能只伤害一次。”这是一个坏习惯。避免全局变量使您的代码更易于阅读和重用,更易于扩展,更易于调试。