1

我在尝试使用 Master (NSOutlineView+NSTreeController) 和 Detail (NSOutlineView+NSTreeController) 设置执行 Master-Detail 应用程序时遇到问题。

这是一个基于 Apple 抽象树示例应用程序的最简单应用程序。

https://s3.amazonaws.com/applicationtests/AbstractTree-MasterDetail.zip

我基本上有一个使用树节点的左项目浏览器,以及显示依赖于项目浏览器选择的细节树的右细节浏览器。

我的设置很简单。

Master NSOutlineView 绑定到 Master NSTreeController 处理一个 CoreData 实体项目节点。Detail NSOutlineView 绑定到 Detail NSTreeController 处理一个 CoreData 实体 Detail Node。

两者都是树。

项目节点实体与细节节点有关系,允许项目树根据选择显示细节树。

我遇到的问题是当我将 Detail NSTreeController 中的 contentObject 绑定到 Master NSTreeController 选择时:

Detail NSTreeController contentObject 绑定到 Master NSTreeController selection.detailNode

每次我更改主树大纲视图中的选择时,细节 NSTreeController 都会创建一个永远不会被释放的 NSTreeControllerTreeNodes。

基本上,每次主控制器选择更改时,细节 NSTreeContrller 都会创建一组新的新 NSTreeControllerTreeNode 对象,这些对象永远不会被释放。

查看 Instruments Allocation 工具,每次更改选择时都会创建新节点。即使删除了所有主节点,节点仍然被分配。

我试图准备一个 NSViewController 来重新加载一个带有主控制器选择更改的新 nib 文件,但这对我来说似乎是一个很大的开销。

当 contentObject 绑定更改为另一个值时,有人知道如何处理创建的 NSTreeControllerTreeNodes 吗?

谢谢。

4

0 回答 0