Как заставить окна раскадровки и их содержимое открываться при закрытии?

Я создаю простое однооконное приложение для OS X на Yosemite, ориентированное на Mavericks, реализованное на Swift. Моя раскадровка основана на проекте по умолчанию, поэтому нет специального оконного контроллера, только ViewController.swift. Когда я закрываю окно, экземпляр этого контроллера представления не освобождается (код в deinit никогда не выполняется), несмотря на то, что я проверил «Release When Closed» для объекта NSWindow в раскадровке.

Кроме того, если я открою его снова (используя переход «показать»), это будет новый экземпляр окна, а не существующий, невыпущенный. В результате, если я открываю и закрываю окно несколько раз, новые экземпляры контроллера представления создаются для каждого нового окна, но, конечно, никогда не освобождаются при закрытии. Кажется глупым, что приложение продолжает потреблять память для каждого окна.

Как мне заставить окна фактически освобождать себя и связанные с ними контроллеры и представления при закрытии?


Обновление: я обнаружил, что, несмотря на то, что параметр "Отпустить при закрытии" отмечен в IB, в viewWillAppear() он неверен. Если я установлю там значение true, когда я закрою окно, а затем открою его снова, когда я снова его закрою, я получу ошибку EXC_BAD_ACCESS, которая просто указывает на мой класс AppDelegate. :-(


person theory    schedule 10.12.2014    source источник


Ответы (2)


если я открою его снова (используя переход «показать»), это будет новый экземпляр окна, а не существующий, невыпущенный.

Вам нужно установить презентацию на один, по умолчанию это несколько.

Убедитесь, что вы нажали кнопку viewController в viewController на раскадровке: введите здесь описание изображения Затем обновите презентацию: введите здесь описание изображения

person SammyRNYCreal    schedule 29.07.2016

Я только что запустил свое приложение в последней бета-версии Xcode 6.2, и проблема больше не существует. Не уверен, что правильно его запомнил, я запустил проект в Xcode 6.1.1, и многократное открытие и закрытие одного окна продолжает увеличивать размер приложения.

Таким образом, похоже, что это проблема, которая исправлена ​​в приложениях, созданных Xcode 6.2.

person theory    schedule 17.01.2015