Вы должны заметить, что это не обязательно лучший шаблон дизайна. Судя по всему, вы, по сути, используете свой делегат приложений для хранения того, что составляет глобальную переменную.
Мэтт Галлахер подробно рассмотрел вопрос о глобалах в своей статье «Какао с любовью» на стр. http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html.. По всей вероятности, ваш ClassA должен быть единичным, а не глобальным в AppDelegate, хотя вполне возможно, что ClassA вы хотите более общего назначения, а не просто синглтон. В этом случае вам, вероятно, будет лучше использовать метод класса для возврата предварительно сконфигурированного экземпляра класса A, например:
+ (ClassA*) applicationClassA
{
static ClassA* appClassA = nil;
if ( !appClassA ) {
appClassA = [[ClassA alloc] init];
appClassA.downloadURL = @"http://www.abc.com/";
}
return appClassA;
}
Или, в качестве альтернативы (поскольку это добавит специфичные для приложения вещи к тому, что, возможно, является классом общего назначения), создайте новый класс, единственная цель которого состоит в том, чтобы содержать этот метод класса.
Дело в том, что глобалы приложений не обязательно должны быть частью AppDelegate. Тот факт, что AppDelegate является известным одноэлементным, не означает, что любое другое глобальное приложение должно быть смешано с ним, даже если они не имеют никакого концептуального отношения к обработке методов делегата NSApplication.