Получение исключения EXC_BAD_ACCESS при доступе к ненулевой переменной
Как вы можете видеть на связанном изображении, я получаю:
EXC_BAD_ACCESS (код =1, адрес =0x0)
при доступе outline.numberOfChildren
но lldb
показывает, что контур не 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
}
ссылка на проект Xcode на github: https://github.com/raphaelreyna/Chapters
1 ответ
Решение
Контур лениво загружен и не может быть загружен, если PDFDocument
выпущен из памяти. Решение: сохраняйте сильную ссылку на PDFDocument
,