2010-05-23 3 views
2

У меня есть singleton в моем приложении FTP, предназначенном для хранения всех типов серверов, которые может обрабатывать приложение, таких как FTP или Amazon S3. Эти типы являются плагинами, которые находятся в комплекте приложений. Их путь находится в приложении applicationWillFinishLoading: и отправляется методу addServerType: внутри одиночного элемента, который должен быть загружен и сохранен в NSMutableDictionary.Как связать элемент управления с одним элементом в какао?

Мой вопрос:
Как связать NSDictionaryController со словарем внутри экземпляра singleton? Можно ли это сделать в IB, или мне нужно сделать это в коде? Мне нужно иметь возможность отображать ключи словаря в NSPopupButton, чтобы пользователь мог выбрать тип сервера.

Заранее благодарен!
SphereCat1

+1

Кто-нибудь? Helloooo oooout therrre! – vilhalmer

ответ

1

Я нашел/составил ответ на этот вопрос: я просто переопределяю метод init, поэтому, когда он вызывается из XIB-файла, он все равно возвращает singleton. Затем я предоставляю метод с именем realInit, чтобы выполнить фактическую инициализацию при первом вызове init.

Код:

-(id)init 
{ 
    @synchronized(self) 
    { 
     if (_sharedInstance == nil) 
     { 
      _sharedInstance = [[VayprServerTypes alloc] realInit]; 
     } 
    } 
    [self release]; 

    return _sharedInstance; 
} 

-(id)realInit 
{ 
    if (self = [super init]) 
    { 
     serverTypesArray = [[NSMutableArray alloc] init]; 
    } 

    return self; 
} 

EDIT: Конечно, вы должны будете определить _sharedInstance как статическая переменная в верхней части реализации класса:

static ClassTypeGoesHere *_sharedInstance; 

ТАКЖЕ EDIT: Так как вы теперь знаете, что ваш метод init будет вызван по крайней мере один раз, вы можете пойти дальше и заменить свой обычный однопользовательский метод sharedInstance следующим образом:

+(ClassTypeGoesHere *)sharedInstance 
{ 
    return _sharedInstance; 
} 

Если кто-либо видит какие-либо очевидные проблемы с этим дизайном, пожалуйста, дайте мне знать! SphereCat1

 Смежные вопросы

  • Нет связанных вопросов^_^