NSOutlineView EXC_BAD_ACCESS crash on expand
我正在尝试使用Swift在我的项目中使用
我已经使用Objective-C进行了几次此操作,没有任何问题,但是由于某些原因,我的应用程序一直崩溃,并使用
我创建了一个仅具有大纲视图和4种数据源方法的新测试项目,但是崩溃也在那里发生。
这是最小的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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的子类,因为我记得阅读过这是必要的。 (我目前找不到参考。)