Как справиться со сбоем, вызванным утечкой памяти при использовании PDFKit в iOS 12?
Я использую pdfKit на CollectionViewController
и каждая ячейка имеет свой отдельный PDF для него, и PDF будет загружен из каталога документов.
Когда я использую следующий код под iOS 11, он работает нормально. Однако, когда я использую его на iOS 12, у меня возникает утечка памяти и последующий сбой.
Это ошибка, которую я получаю:
Поток 4: EXC_BAD_ACCESS (код =1, адрес =0x107b5401c)
Это мой код:
func loadData(_ finame: String) {
let dbPath = finame
let url = URL(fileURLWithPath: dbPath)
if let pdfDocument = PDFDocument(url: url) {
self.pdfView.document = pdfDocument
self.pdfView.autoScales = true
self.pdfView.maxScaleFactor = 4.0
self.pdfView.minScaleFactor = pdfScaleFactor
if #available(iOS 12.0, *) {
self.pdfView.pageShadowsEnabled = false
}
}
}
Как я могу исправить эту проблему?
1 ответ
Попробуйте использовать [слабое я] в замыкании. Возможно, вы создаете сильный ссылочный цикл на себя и никогда не освобождаете его. И эта память продолжает расти, поскольку данные в формате PDF довольно большие.
func loadData(_ finame: String) {
let dbPath = finame
let url = URL(fileURLWithPath: dbPath)
if let pdfDocument = PDFDocument(url: url) { [weak self] in,
self?.pdfView.document = pdfDocument
self?.pdfView.autoScales = true
self?.pdfView.maxScaleFactor = 4.0
self?.pdfView.minScaleFactor = pdfScaleFactor
if #available(iOS 12.0, *) {
self?.pdfView.pageShadowsEnabled = false
}
}
}