Swift代碼
當我們拿到一個UIView的截圖中,我們使用此代碼通常是:迅速UIGraphicsGetImageFromCurrentImageContext不能釋放內存
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)
我看你有2個月後沒有答案,我想我得到了同樣的問題。我不認爲你找到了解決方法或解決方法? – Martin
我遇到了同樣的問題並尋找解決方案。 – Hope