(首先我觉得有义务指出,这不是你应该用来在多个视图控制器中提供数据的方式。)
Objective-C 中没有全局变量。至少不是“应用程序范围”。您可以通过以下方式声明“文件范围”变量:
static NSArray *_array;
但是您只能在同一个文件中访问它。要使其在其他类中可访问,您必须创建类方法来执行此操作(至少据我所知):
+ (NSArray *)array
{
return array;
}
+ (void)setArray:(NSArray *)array
{
_array = array;
}
(当然你还需要在头文件中声明类方法。
单例模式可以这样实现:
@interface SomeClass : NSObject
@property(nonatomic,retain)NSArray *array;
+(SomeClass*)sharedInstance;
@end
@implementation SomeClass
static SomeClass *instance =nil;
+(SomeClass *)sharedInstance
{
@synchronized(self)
{
if(instance == nil)
{
instance= [[SomeClass alloc] init];
}
}
return instance;
}
然后,您可以通过调用访问数组:
[[SomeClass] sharedInstance].array