我正在尝试实现我自己的 NSViewController 版本(为了向后兼容),但我遇到了绑定问题:由于绑定保留了它们的目标,所以每当我通过 File 的所有者绑定时,我都有一个保留圈。
所以我想我只是明确地从它的超级视图中删除我的视图并释放顶级对象,这将处理绑定,因为我的控制器不再持有视图,所以他们释放了我,我可以离开。但是由于某种原因,我的视图控制器仍然没有被释放。这是一个展示问题的示例应用程序:
http://dl.dropbox.com/u/34351/BindingsLeak.zip
构建它,启动它,然后点击 Cmd-K(“编辑”菜单中的“创建 Nib”)将一个 NIB 加载到空窗口中。再次点击 Cmd-K 以释放第一个视图控制器 (TestNibOwner) 并加载一个新的。但是,旧的视图控制器永远不会被释放。
删除复选框上的“值”绑定,它就可以正常释放了。
如果您在 release/retain/autorelease 覆盖处设置断点,您会看到 _NSBindingInfo 保留了 TestNibOwner,但在泄漏的情况下从不释放它。
有人知道怎么修这个东西吗?