CGPDFDocumentRelease () вылетает приложение, ошибочно говорит, что уже освобожден - PullRequest
0 голосов
/ 05 ноября 2010

Я пишу просмотрщик PDF для iOS.Я получаю ссылку на pdf, когда инициализирую свой viewcontroller, например,

pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

Затем я использую его на протяжении всей жизни этого класса для получения CGPDFPageRef, например,

CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdf, docPage);

Дочернее представлениеконтроллеры используют эти страницы и освобождают их, когда dealloc'd.Однако, когда я пытаюсь выпустить сам pdf (с помощью CGPDFDocumentRelease), я получаю следующую ошибку:

[Not A Type release]: message sent to deallocated instance

Что с этим случилось?Это не будет проблемой, но мой анализ heapshot заполнен CG-объектами и массивным распределением, которое, кажется, все соотносится с потоком контента pdf (отдельные страницы).

1 Ответ

5 голосов
/ 05 ноября 2010

Вы не должны выпускать pageRef, если вы не сохранили его.Даже если вы сохранили его, он может быть недоступен, если сам документ был освобожден.Поэтому вам может потребоваться сохранить как страницу, так и документ в ваших дочерних контроллерах представления и соответственно освободить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...