Вы можете сохранить окно с помощью CFRetain
или использовать NSGarbageCollector
s disableCollectorForPointer:
. Тем не менее, вы можете легко внести утечку памяти. Убедитесь, что любое действие, которое вы используете для закрытия окна, также освобождает окно.
Если sender
, переданное действию close, наследуется от NSView
, у него будет свойство window
, которое можно использовать для получения указателя на окно.
Тем не менее, Какао не предназначен для работы. В главе 12 книги Хиллегаса он говорит следующее:
При отправке showWindow: впервые NSWindowController автоматически загружает файл пера и перемещает окно на экран и вперед. Файл пера загружается только один раз. Когда пользователь закрывает [окно], оно удаляется с экрана, но не освобождается. В следующий раз, когда пользователь запрашивает [окно], оно просто перемещается на экран.
Если вы освободите окно «О программе», ваше приложение будет либо аварийно завершено, либо появится сообщение, что оно не ответит, когда кто-то откроет его.
Редактировать: Альтернатива (но которая не дает вам практики в загрузке перьев) заключается в добавлении окна About и NSWindowController к основному перу (убедитесь, что вы сняли флажок с атрибута «Видимый при запуске» окна «О»). Это делает беспорядок Main.nib, но может быть сделано полностью в Интерфейсном Разработчике. Подключение:
- Окно О выводе контроллера в окно О
- Действие контроллера
showWindow:
на пункт меню О
- если у вас есть собственная кнопка закрытия в окне «О программе», подключите ее к действию
performClose:
окна.
Что касается того, насколько рекомендуется этот курс, У Apple есть это, чтобы сказать :
Очень простое приложение может хранить все компоненты пользовательского интерфейса в одном файле пера, но для большинства приложений лучше распределить компоненты по нескольким файлам пера. Создание меньших файлов пера позволяет загружать только те части вашего интерфейса, которые вам нужны немедленно. Меньшие файлы пера приводят к лучшей производительности для Вашего приложения. Они также облегчают отладку любых проблем, с которыми вы можете столкнуться, поскольку здесь меньше мест для поиска проблем.