2015-12-31 76 views
1

我想在我的项目中使用NSOutlineView,使用Swift。 我已经使用Objective-C已经完成了几次,没有任何问题,但由于某种原因,现在我的应用一直在崩溃EXC_BAD_ACCESS,主要是在试图扩展单元时。NSOutlineView 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

有几件事情我不得不修复,使您的样品按预期方式工作:

  • 有大纲视图试图保留之前的相关“测试”是一个本地字符串,并发布了崩溃它。这是通过拥有视图控制器所拥有的项目来解决的。

  • 之后,由于无限递归,我遇到了崩溃。通过建立数据模型来解决这个问题,而不是告诉大纲视图,无论物品处于何种级别,每个物品都有3个孩子。

  • 我也改变了项目从NSObject而不是字符串subclassed,因为我记得那是必要的。 (我目前找不到该参考文献)。