我正在尝试使用 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
答案 0 :(得分:1)
我必须解决一些问题,以使您的样本按预期工作:
与“测试”相关的崩溃是一个本地字符串,并在大纲视图尝试保留之前释放。这是通过让视图控制器拥有的项目来解决的。
之后,由于无限递归,我遇到了崩溃。这是通过拥有一个数据模型而不是告诉大纲视图来解决的,即无论项目处于什么级别,每个项目都有3个孩子。
我还将项目更改为NSObject而不是String的实例子类,因为我记得读过那个必要的内容。 (我目前找不到参考资料。)