Я создаю окна программно, а затем добавляю их в массив, когда я показываю их так.Удалить NSWindow из массива после закрытия
NSWindow *window = [[NSWindow alloc] initWithContentRect:frame styleMask:NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask backing:NSBackingStoreBuffered defer:NO];
window.delegate = self;
window.releasedWhenClosed = YES;
[window makeKeyAndOrderFront:NSApp];
[_array addObject:window];
Мне нужно удалить окна из массива, когда они закрыты, но я не могу заставить это работать. Если я удалю окно из своего массива в методе делегирования -windowWillClose:
, как это, мое приложение вылетает с EXC_BAD_ACCESS
после завершения метода делегата.
- (void)windowWillClose:(NSNotification *)notification
{
NSWindow *window = notification.object;
[_array removeObject:window];
}
Show. Ваш. Код. Благодаря! – matt
Также: вы действительно думаете, что разумно хранить сильную ссылку на главный объект, такой как NSWindow, который не принадлежит вам? Зачем вам это нужно? Приложение знает, какие окна есть; для чего этот массив? – matt
Хорошо, я добавил код. Если я не сохраню сильную ссылку, окно не будет отображаться. Кроме того, в зависимости от действия пользователя он будет отображать существующее окно вместо создания нового. –