Wenn einige Bilder in meinen QuicklookController geladen werden, wird der verwendete Speicher niemals durch die Speicherverwaltung freigegeben. Beispiel:iOS 10 Quicklook-Speicherauslastung
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let photoFile = photos[indexPath.row] as Photo
currentFilePath = photoFile.filePath
let preview = QLPreviewController()
preview.dataSource = self
self.navigationController?.pushViewController(preview, animated: false)
}
func documentsDirectoryURL() -> NSURL {
let manager = NSFileManager.defaultManager()
let URLs = manager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return URLs[0]
}
func previewController(controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem {
return documentsDirectoryURL().URLByAppendingPathComponent(currentFilePath)
}
Hier wird das Bild fehlerhaft geladen. Bildgröße beträgt etwa 200kbytes, mit einer Größe von etwa 2500x1250 Pixeln. Der Speicher wurde um ca. 10 MB erhöht, ABER wenn der Controller geschlossen wird (Zurück-Taste), wird der Speicher weiterhin benutzt. Jeder Klick kostet also 10 MB zusätzlichen RAM (Wichtig, wenn das Bild gleich oder neu ist)
Wie kann ich erzwingen, dass der QLPreviewController
den verwendeten Speicher freigibt?
Edit: Es scheint, dass dies bereits berichtet:
https://github.com/jcamiel/radars/blob/6b02382c08cdd9312df325a7a08ea9efeec5727b/28318213/radar.md
https://forums.developer.apple.com/thread/63020
Edit2:
Getestet jetzt mit 2 iPad Pro 9.7
Zuerst iOS 10.0.1 -> Speicher erhöht sich wie oben beschrieben. Zweitens iOS 9.3.5 -> keine Speicherprobleme
So ist es seine wirklich nur ein iOS 10 Bug scheint ...