我当然有两个带有自己的.h和.m文件的视图。如何在一个视图中声明一个bool(或任何变量)并在另一个视图中使用bale来访问它?
感谢。
答案 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?
“为什么我不应该使用全局变量呢?这不能只伤害一次。”这是一个坏习惯。避免全局变量使您的代码更易于阅读和重用,更易于扩展,更易于调试。