Привязки, свойства и постоянство объекта
Во-первых: я действительно надеюсь, что поставил вопрос в нужном месте, поэтому, пожалуйста, поправьте меня, если я на неправильном пути...!
У меня есть окно для отображения данных, которые обновляются с интервалами в виде таблицы. Эти данные управляются Controller
Объект, который является источником данных таблицы. WindowController
имеет свойство контроллера, которое связано с Controller
объект в ИБ:
@implementation WindowController
- (id) initWithWindowNibName:(NSString *)windowNibName {
self = [super initWithWindowNibName:windowNibName];
if (self) {
_controller = [[Controller alloc] init];
}
return self;
}
- (void) windowDidLoad {
...
Кроме того, у меня есть WindowHandler
класс, который имеет статическую ссылку на WindowController с методами класса для открытия и закрытия окна:
static WindowController * windowController = nil;
@implementation WindowHandler
+ (void) initialize {
if (self == [WindowHandler class]) {
if (!windowController) {
windowController = [[WindowController alloc] initWithWindowNibName:kWindowNibKey];
}
}
}
+ (void) showWindow:(id)sender {
[windowController showWindow:sender];
}
...
Поскольку я хочу отслеживать данные, которые должны отображаться в окне, еще до того, как окно открывается в первый раз, я делаю [WindowHandler initialize]
в моем AppDelegate
"s applicationDidFinishLaunching:
, Это инициирует WindowController
и, следовательно, Controller
объект. Контроллер начинает мониторинг данных после запуска, что является моим желаемым результатом.
Проблема возникает, когда окно открывается впервые: новый экземпляр Controller
Объект инициируется, очевидно, когда загружается кончик окна. С этого времени два Controller
объекты работают и наблюдают за данными, которые не только не нужны, но и увеличивают загрузку процессора. Более того, я подозреваю, что это нередко приводит к сбоям (иногда я получаю исключения: "insertRowsAtIndexes: withRowAnimation: не может произойти при обновлении видимых строк!").
Я предполагаю, что упускаю что-то в концепции свойств объекта или, может быть, в концепции привязок. Я что-то не так делаю? Или есть хороший способ сделать то, что я пытаюсь сделать? Любая помощь приветствуется! Заранее спасибо!