Я пытаюсь реализовать свою собственную версию NSViewController (для обратной совместимости), и я столкнулся с проблемой с привязками: поскольку привязки сохраняют свою цель, у меня есть круг сохранения всякий раз, когда я связываюсь через File's владелец.Как NSViewController избегает утечки памяти привязок? [иметь пример приложения]
Итак, я думал, что просто удалю мой взгляд из своего супервизора и выпущу объекты верхнего уровня, и это позаботится о привязках, потому что мой контроллер больше не держится за представления, поэтому они освобождают я и я могу уйти. Но почему-то мой диспетчер просмотров по-прежнему не освобождается. Вот пример приложения экспонирование проблемы:
http://dl.dropbox.com/u/34351/BindingsLeak.zip
Построить его, запустить его, и ударил Cmd-K («Создание СИБ» в меню «Edit»), чтобы загрузить СИБ в пустое окно. Нажмите Cmd-K снова, чтобы выпустить первый контроллер представления (TestNibOwner) и загрузить новый. Однако старый контроллер просмотра не освобождается.
Снимите привязку «значение» на флажке, и она будет выпущена просто отлично.
Если вы установили точки останова при переопределении релиза/сохранения/автоопределения, вы увидите, что _NSBindingInfo сохраняет TestNibOwner, но никогда не выпускает его в случае утечки.
Кто-нибудь знает, как это исправить?
К сожалению, я не хочу, чтобы загрузить проект первого в помочь тебе. Можете ли вы предоставить код? –