NSOutlineView EXC_BAD_ACCESS 展开时崩溃

NSOutlineView EXC_BAD_ACCESS crash on expand

我正在尝试在我的项目中使用 NSOutlineView,使用 Swift。 我已经使用 Objective-C 完成了几次,没有任何问题,但由于某种原因,现在我的应用程序不断崩溃 EXC_BAD_ACCESS,主要是在尝试扩展细胞.

我创建了一个只有大纲视图和 4 个数据源方法的新测试项目,但是 崩溃 也发生了。

这是最小的实现:

func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int {

    return 3
}

func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject {

    return "Test"
}

func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool {

    return true
}

func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? {

    return nil
}

知道我做错了什么吗?

我在这里上传了测试项目。请审查它。 https://drive.google.com/file/d/0BzEhecUbyNeFS3JGN1V0SlJ0dWM/view

为了使您的示例按预期工作,我必须解决一些问题:

  • "Test" 是本地字符串并在大纲视图试图保留它之前被释放,导致崩溃。这是通过让视图控制器拥有项目来解决的。

  • 之后遇到无限递归崩溃。这是通过使用数据模型而不是告诉大纲视图每个项目都有 3 个子项来解决的,无论该项目处于什么级别。

  • 我还将项目更改为从 NSObject 而不是 String 子类化的实例,因为我记得读过那是必要的。 (我目前找不到参考。)