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)