Swift Code
Когда мы получаем скриншот UIView, мы обычно используем этот код:
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Проблема
drawViewHierarchyInRect
&& UIGraphicsGetImageFromCurrentImageContext
будет генерировать изображение в текущем Контексте, но память будет не выпущена при вызове UIGraphicsEndImageContext
.
Использование памяти продолжает увеличиваться, пока приложение не сработает.
Несмотря на то, что слово UIGraphicsEndImageContext
будет автоматически вызывать CGContextRelease
", оно не работает.
Как я могу освободить используемую память drawViewHierarchyInRect
или UIGraphicsGetImageFromCurrentImageContext
Или?
В любом случае создается скриншот без drawViewHierarchyInRect
?
Уже пробовал
1 Автоматический выпуск: не работает
var image:UIImage?
autoreleasepool{
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
image = nil
2 UnsafeMutablePointer: не работает
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)