Если вы планируете хранить какие-то общие настройки для своего приложения, используйте [NSUserDefaults sharedDefaults], чтобы сохранить простые данные, которые можно использовать в приложении. Если вы храните временные данные, тогда «статический» подход будет работать как и везде.
Однако, вероятно, лучше использовать одноэлементный объектный подход с аксессором класса, таким как NSUserDefaults, а затем предоставить методы доступа к экземпляру для получения ваших данных. Таким образом, вы будете изолированы от возможных изменений структуры данных в будущем. Затем вы использовали бы статическую переменную, как указано выше, но в файле .m (и, следовательно, вам не нужно определение 'extern'). Обычно это выглядит так:
static Foo *myDefault = nil;
@implementation Foo
+(Foo)defaultFoo {
if(!myDefault)
myDefault = [[Foo alloc] init]; // effective memory leak
return myDefault;
}
@end
После этого у вас будут средства доступа к экземплярам, и вы будете использовать их как [[Foo defaultFoo] myArray], к которым можно получить доступ из любой части приложения и без каких-либо ошибок во время компиляции.