Я пытаюсь реализовать свою собственную версию NSViewController (для обратной совместимости), и у меня возникла проблема с привязками: поскольку привязки сохраняют свою цель, у меня появляется круг сохранения при каждой привязке через владельца файла.
Так что я решил просто явно удалить свой вид из его суперпредставления и освободить объекты верхнего уровня, и это позаботится о привязках, потому что мой контроллер больше не удерживает представления, поэтому они освобождают меня и я могу уйти. Но по какой-то причине мой контроллер представления все еще не выпущен. Вот пример приложения, показывающего проблему:
http://dl.dropbox.com/u/34351/BindingsLeak.zip
Создайте его, запустите и нажмите Cmd-K («Создать Nib» в меню «Редактировать»), чтобы загрузить NIB в пустое окно. Нажмите Cmd-K еще раз, чтобы освободить первый контроллер представления (TestNibOwner) и загрузить новый. Однако старый контроллер представления никогда не освобождается.
Удалите привязку «значение» на флажок, и он будет выпущен просто отлично.
Если вы установите точки останова в переопределениях release / retain / autorelease, вы увидите, что _NSBindingInfo сохраняет TestNibOwner, но никогда не освобождает его в случае утечки.
Кто-нибудь знает, как это исправить?