Ich kämpfe schon seit Ewigkeiten damit, einen funktionierenden PDF-Reader für iPhone/iPad zu entwickeln, aber das Ding hört einfach nicht auf, Speicher zu fressen. Es scheint, dass alle Seiten mit CGContextDrawPDFPage gezeichnet werden intern zwischengespeichert und nie freigegeben.
Ich bin nicht der Einzige, der dieses Problem hat: http://lists.apple.com/archives/quartz-dev/2010/Apr/msg00025.html
http://web.archiveorange.com/archive/v/SEb6acvPicMB2NdIjEd3
Eine Antwort aus dem ersten Thread:
Wenn es das ist, wofür ich es halte, ist es kein Leck, sondern ein Cache. Anstatt das PDF-Dokument zwischen den Aufrufen zu speichern, sollten Sie versuchen, das Dokument zu erstellen, die Seite abzurufen und zu zeichnen und dann das Dokument freizugeben, wenn Sie fertig sind.
Ich habe es ausprobiert, und es löst das Problem, aber es ist zu verdammt langsam. Wenn ich es auf die "normale" Weise mache (d.h. ohne CGPDFDocument für jede Zeichnung zu laden/freizugeben), funktioniert es gut und ziemlich schnell, bis ich die 4. oder 5.
Ich habe dieses Problem seit Ewigkeiten gegoogelt: Alle haben das gleiche Problem, aber anscheinend hat es niemand hinbekommen. Die einzigen Beispiele, die ich gefunden habe, laden ein einseitiges PDF, so dass offensichtlich alles gut funktioniert, bis man ein Dokument mit mehreren Seiten lädt (und natürlich, wenn das Ding Bilder enthält, stürzt es noch früher ab). Das macht mich wahnsinnig.
Also die Frage ist: wie genau handhaben Sie PDF-Zeichnung mit CGPDF in Ihrer Anwendung? Jede Hilfe würde sehr geschätzt werden. Danke!