【发布时间】:2011-12-01 05:03:42
【问题描述】:
我是 iphone 新手,我只开发了两个小应用程序,在这些应用程序中,当我需要项目级全局变量时,我曾经在应用程序委托中声明,但我在某处读到这不是最好的方法,所以有人可以告诉我声明项目级全局变量的最佳方法是什么?
【问题讨论】:
标签: iphone
我是 iphone 新手,我只开发了两个小应用程序,在这些应用程序中,当我需要项目级全局变量时,我曾经在应用程序委托中声明,但我在某处读到这不是最好的方法,所以有人可以告诉我声明项目级全局变量的最佳方法是什么?
【问题讨论】:
标签: iphone
有很多不同的方法可以做到这一点:
在 .h 中声明变量,如“myView.h”文件并通过导入此 .h 文件(通过 #import "myView.h" 文件)访问它
在.h中声明变量为extern,如“myView.h”文件为extern NSArray *myGlobalArray; 然后在AppDelegate文件中,分配&初始化变量:
myGlobalArray = [[NSArray alloc] init];
然后只需 #import "myView.h" 在您需要此变量的地方。
我认为这会对你有所帮助。
【讨论】:
几天前我刚刚回答了类似的question。在我看来,使用singleton 将是最好的方法。您还可以查看 my answer 关于将单例用于全局变量的信息。
您也可以为此目的使用appDelegate。但我不会推荐使用 appDelegate。详情请参阅this。
【讨论】:
这实际上取决于您需要访问的变量的数量。如果您需要从应用程序中的任何位置访问大量变量,我建议您制作一个单例。 How to make a singleton
这是 Sachin Shanbhag 制作的有关其工作原理的示例
@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;
+(MySingleton*)sharedMySingleton
{
@synchronized([MySingleton class])
{
if (!_sharedMySingleton)
[[self alloc] init];
return _sharedMySingleton;
}
return nil;
}
【讨论】:
要么你在头文件中使用extern这个词
extern NSString* yourVar;
或者你可以像你提到的那样在你的应用程序委托中声明它..
【讨论】: