【问题标题】:NSOutlineView EXC_BAD_ACCESS crash on expandNSOutlineView EXC_BAD_ACCESS 在展开时崩溃
【发布时间】:2015-12-31 01:02:40
【问题描述】:

我正在尝试在我的项目中使用 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

【问题讨论】:

    标签: swift cocoa xcode7 nsoutlineview


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2010-11-18
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      相关资源
      最近更新 更多