2016-09-22 1 views
0

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 ...

Antwort

0

scheint mit iOS 10.0.2

fixiert werden