代码之家  ›  专栏  ›  技术社区  ›  Antal Kerekes

NSOutlineView EXC_BAD_ACCESS扩展时崩溃

  •  1
  • Antal Kerekes  · 技术社区  · 9 年前

    我正在尝试使用 NSOutlineView 在我的项目中,使用 敏捷的 . 我已经用过几次了 目标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 回复  |  直到 9 年前
        1
  •  1
  •   Phillip Mills    9 年前

    为了使您的示例按预期工作,我必须修复以下几点:

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

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

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