扩展

时间:2015-12-31 01:02:40

标签: swift cocoa xcode7 nsoutlineview

我正在尝试使用 Swift 在我的项目中使用NSOutlineView。 我已经使用 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

1 个答案:

答案 0 :(得分:1)

我必须解决一些问题,以使您的样本按预期工作:

  • 与“测试”相关的崩溃是一个本地字符串,并在大纲视图尝试保留之前释放。这是通过让视图控制器拥有的项目来解决的。

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

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