Swift Code
Wenn wir einen Screenshot von einem UIView zu erhalten, verwenden wir diesen Code in der Regel:rasche UIGraphicsGetImageFromCurrentImageContext kann nicht loslassen Speicher
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Problem
drawViewHierarchyInRect
& & UIGraphicsGetImageFromCurrentImageContext
wird eine generieren Bild im aktuellen Kontext, aber Speicher wird nicht freigegeben, wenn wenn UIGraphicsEndImageContext
aufgerufen wird.
Speicherverbrauch wird weiter erhöht, bis die App abstürzt.
Obwohl es ein Wort ist UIGraphicsEndImageContext
wird CGContextRelease
rufen automatisch“, funktioniert es nicht.
Wie kann ich den Speicher freigeben drawViewHierarchyInRect
oder UIGraphicsGetImageFromCurrentImageContext
Oder?
Gibt es trotzdem zu erzeugen Screenshot ohne drawViewHierarchyInRect
?
Bereits versucht
1 Auto-Release: nicht arbeitet
var image:UIImage?
autoreleasepool{
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
image = nil
2 UnsafeMutablePointer: Arbeit nicht
var image:UnsafeMutablePointer<UIImage> = UnsafeMutablePointer.alloc(1)
autoreleasepool{
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
image.initialize(UIGraphicsGetImageFromCurrentImageContext())
UIGraphicsEndImageContext()
}
image.destroy()
image.delloc(1)
Ich sehe, Sie haben keine Antworten nach 2 Monaten, und ich glaube, ich bin das gleiche Problem bekommen. Ich nehme nicht an, dass Sie eine Reparatur oder einen Workaround gefunden haben? – Martin
Ich habe das gleiche Problem angetroffen und suche nach einer Lösung. – Hope