Так вот как я это решил ...
У меня есть класс "MyPreferencesWindowController", который имеет метод с именем getInstance
. Этот метод вызывается, когда вы хотите получить окно настроек. Это решение использует преимущества одноэлементной технологии.
/**
Method in my MyPreferencesWindowController.m file
with a corresponding method in the .h file.
*/
+(id) getInstance {
static PreferencesWindowController *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
Теперь в классе Document, когда вы хотите показать окно настроек, выполните следующие действия:
-(IBAction) showPreferences:(id)sender {
if (preferencesWc == nil)
preferencesWc = [MyPreferencesWindowController getInstance];
[ preferencesWc showWindow:self ];
}
Это обеспечит создание окна настроек только один раз. И тогда каждый вызов getInstance
будет возвращать один и тот же экземпляр окна.