(まず第一に、私は指摘する義務があると感じています。それは、複数のView Controllerでデータを利用できるようにするために使用する方法ではないということです。)
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