Я создаю простое однооконное приложение для OS X на Yosemite, ориентированное на Mavericks, реализованное на Swift. Моя раскадровка основана на проекте по умолчанию, поэтому нет специального оконного контроллера, только ViewController.swift
. Когда я закрываю окно, экземпляр этого контроллера представления не освобождается (код в deinit
никогда не выполняется), несмотря на то, что я проверил «Release When Closed» для объекта NSWindow в раскадровке.
Кроме того, если я открою его снова (используя переход «показать»), это будет новый экземпляр окна, а не существующий, невыпущенный. В результате, если я открываю и закрываю окно несколько раз, новые экземпляры контроллера представления создаются для каждого нового окна, но, конечно, никогда не освобождаются при закрытии. Кажется глупым, что приложение продолжает потреблять память для каждого окна.
Как мне заставить окна фактически освобождать себя и связанные с ними контроллеры и представления при закрытии?
Обновление: я обнаружил, что, несмотря на то, что параметр "Отпустить при закрытии" отмечен в IB, в viewWillAppear()
он неверен. Если я установлю там значение true, когда я закрою окно, а затем открою его снова, когда я снова его закрою, я получу ошибку EXC_BAD_ACCESS
, которая просто указывает на мой класс AppDelegate. :-(