Cra sh - Поделиться расширением приложения - Изображение - iOS 13 - EXC_RESOURCE RESOURCE_TYPE_MEMORY (лимит = 120 МБ, неиспользованный = 0x0) - PullRequest
1 голос
/ 08 января 2020

У меня "бой" с 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)

Я не могу понять почему происходит внезапное увеличение памяти. У кого-нибудь есть и идея что здесь происходит и как это исправить ?

Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...