Да, общий способ разблокировки оконного контроллера заключается в:
- (void)windowWillClose:(NSNotification *)notification
{
[self autorelease];
}
Контроллер окна должен жить только до тех пор, пока окно вокруг него, поэтому автоматическое освобождение его при закрытии окна имеет смысл.
Не забудьте удалить других наблюдателей и т. Д.
[добавлена информация для работы под ARC]
Для ARC вам необходимо сохранять четкую ссылку на элемент управления окном, пока оно открыто, а затем удалять его при закрытии окна.
Для этого я добавил категорию в окне, управляемом двумя способами:
pnl_addWindowController
& mdash; вызывается оконным контроллером при первом открытии окна
pnl_removeWindowController
& mdash; вызывается с windowWillClose
Категория поддерживает глобальные NSMutableSet
активных оконных контроллеров. Код, по сути, просто [gWindowControllers addObject:self]
и [gWindowControllers removeAllObjects]
, с небольшим созданием NSMutableSet и некоторой блокировкой.