У меня "бой" с cra sh, который появился через 10 дней go, и он все еще появляется, когда я хочу поделиться картинкой с моим приложением. Обратите внимание, что эта функция работала без проблем в течение последних 12 месяцев.
В расширении общего доступа к приложениям cra sh EXC_RESOURCE RESOURCE_TYPE_MEMORY (ограничение = 120 МБ, не используется = 0x0) происходит в UIImage.draw (in: rect) Метод расширения UIImage, когда выбранное изображение для обмена начинает рисовать себя в предварительном просмотре CGRect.
extension UIImage {
func resizeImageOriginalSize(_ targetSize: CGSize) -> UIImage {
var actualHeight: Float = Float(self.size.height)
var actualWidth: Float = Float(self.size.width)
let maxHeight: Float = Float(targetSize.height)
let maxWidth: Float = Float(targetSize.width)
var imgRatio: Float = actualWidth / actualHeight
let maxRatio: Float = maxWidth / maxHeight
var compressionQuality: Float = 0.5
//50 percent compression
if actualHeight > maxHeight || actualWidth > maxWidth {
if imgRatio < maxRatio {
//adjust width according to maxHeight
imgRatio = maxHeight / actualHeight
actualWidth = imgRatio * actualWidth
actualHeight = maxHeight
}
else if imgRatio > maxRatio {
//adjust height according to maxWidth
imgRatio = maxWidth / actualWidth
actualHeight = imgRatio * actualHeight
actualWidth = maxWidth
}
else {
actualHeight = maxHeight
actualWidth = maxWidth
//compressionQuality = 0.5
}
}
let rect = CGRect(x: 0.0, y: 0.0, width: CGFloat(actualWidth), height: CGFloat(actualHeight))
UIGraphicsBeginImageContextWithOptions(rect.size, false, CGFloat(compressionQuality))
self.draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}}
Ограничение использования памяти для Share Extension составляет 120 Мб, все, что выше этой ОС, вылетает из приложения. Я проверял использование памяти, и нормальное значение составляет около 70 МБ, прежде чем рисовать изображение в прямоугольнике, а затем использование памяти сразу же превышает 120 МБ (около 130 МБ).
Cra sh в основном происходит на линии:
self.draw (in: rect)
Я не могу понять почему происходит внезапное увеличение памяти. У кого-нибудь есть и идея что здесь происходит и как это исправить ?
Спасибо всем.