【问题标题】:Getting EXC_BAD_ACCESS exception when accessing non null variable访问非空变量时出现 EXC_BAD_ACCESS 异常
【发布时间】:2019-07-30 00:25:36
【问题描述】:

正如您在链接图像中看到的那样,我得到:

EXC_BAD_ACCESS(代码=1,地址=0x0)

当访问outline.numberOfChildrenlldb 表明轮廓不是nil 并且outline.numberOfChildren 是0(这正是在这种情况下应该是什么)。为什么会这样? 谢谢。

图片链接:https://imgur.com/a/StLBued

代码:

 func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool { 
  if self.rootOutline != nil {
     if let outline = item as? PDFOutline {
         if outline.numberOfChildren == 0 {  // <- Error here
            return false
          }
         return true
       }
     if self.rootOutline!.numberOfChildren == 0 {
       return false
       }
     return true
    }
  return false
 }

github 上 Xcode 项目的链接:https://github.com/raphaelreyna/Chapters

【问题讨论】:

  • 您应该在问题中发布代码而不是使用屏幕截图,这可能是问题被否决的原因。
  • 彼得·鲁珀特,感谢您的编辑。
  • 没问题,祝你好运!
  • NSOutline 是错字吗?我没有找到有关它的文档,并且您的 git 中心在同一个地方显示 PDFOutline
  • Ricky Mo,是的,打错字了,应该是 PDFOutline。

标签: swift macos apple-pdfkit


【解决方案1】:

大纲被延迟加载,如果PDFDocument 从内存中释放,则无法加载。解决方案:保持对PDFDocument的强引用。

【讨论】:

  • 但是if let outline = item as? PDFOutline 不是在创建你提到的强引用吗?
  • 这行得通,谢谢 Willeke。我从来没有想到这是问题所在。
  • @Cristik item 是对 PDFOutline 的强引用,但 PDFOutline 项不保留对文档的强引用,documentPDFOutline 的弱属性. outlineRootPDFDocument 的强属性。在 outlineView(_:isItemExpandable:) 中创建强引用将不起作用,因为该文档已发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2023-04-06
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多