Доступна ли переменная, объявленная в AppDelegate, всем остальным классам? - PullRequest
2 голосов
/ 26 июля 2011

Что именно метод AppDelegates дается в XCode ??У меня так много классов в моем приложении.Теперь я хочу, чтобы у меня был класс AudioStreamer, и я должен использовать этот класс в большинстве других классов ... И я хочу иметь только один экземпляр класса AudioStreamer.Так что будет легко справиться с одним объектом.Можно ли объявить класс AudioStreamer в файле AppDelegate и создать экземпляр только в этом файле ... Могу ли я получить доступ к этой переменной во всем другом классе .???

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Я бы порекомендовал singleton , чтобы только один экземпляр создавался и использовался всеми клиентами.

Предлагаю Мэтту Галагерсу написать о синглетах и ​​его загружаемом SynthesizeSingleton.h:

http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

2 голосов
/ 26 июля 2011

Вы можете использовать очень удобные функции GCD (Grand Central Dispatch) для достижения поведения Singleton на этих линиях -

+ (AudioStreamer*) defaultStreamer {
    static AudioStreamer* defaultStreamer = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        defaultStreamer = [[AudioStreamer alloc] init];
    });
    return defaultStreamer; 
} 
1 голос
/ 26 июля 2011

Вы также можете получить доступ к объектам, объявленным как свойства в appDelegate через ваше приложение, как это.

myFirstAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
myStr=[appDelegate.mainArray objectAtIndex:1];

В приведенном выше примере я показал, как получить доступ к массиву, который я объявил и сохранил в классе appDelegate. Таким образом, вы можете получить доступ к любым объектам, которые вы хотите объявить как свойства, через ваше приложение. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...