崩溃 - 共享应用程序扩展 - 图像 - iOS 13 - EXC_RESOURCE RESOURCE_TYPE_MEMORY(限制 = 120 MB,未使用 = 0x0)

2024-01-07

我正在与 10 天前出现的崩溃进行“斗争”,当我想与我的应用程序分享图片时,它仍然出现。请注意,该功能在过去 12 个月内一直正常运行。

在共享应用程序扩展中崩溃EXC_RESOURCE RESOURCE_TYPE_MEMORY(限制=120 MB,未使用=0x0) happens在 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 的内存使用限制为 120mb,超过该限制的任何内容都会导致应用程序崩溃。我检查了内存使用情况,在矩形中绘制图像之前,正常值约为 70MB,然后内存使用情况立即跃升至 120MB(约 130MB)。

崩溃主要发生在线路上:

self.draw(in: rect)

我不明白为什么内存会突然增加。

这里发生了什么以及如何解决它?


如果您正在使用:

Data(contentsOf: url)

尝试用选项替换它NSDataReadingMappedIfSafe:

Data(contentsOf: url, options: .mappedIfSafe)

使用大文件(主要是视频)将不再提供此类错误。

Before: Before

After: After

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

崩溃 - 共享应用程序扩展 - 图像 - iOS 13 - EXC_RESOURCE RESOURCE_TYPE_MEMORY(限制 = 120 MB,未使用 = 0x0) 的相关文章

  • 如何在 SpriteKit SKScene 类中启动 ReplayKit 屏幕录制

    我已经实施了ReplayKit in my SpriteKit游戏 但由于一切都在游戏内完成GameViewController录制按钮出现得太早 请看我的GameViewController下面的类 class GameViewContr
  • Swift SpriteKit 获取可见帧大小

    我一直在尝试使用 Swift 创建一个简单的 SpriteKit 应用程序 目的是让红球在点击时重新定位在屏幕上 但变量 self frame width 和 self frame height 不会返回可见屏幕的边界 相反 它们返回整个屏
  • 删除 GameCenter 排行榜 - iTunes Connect

    我的游戏目前有四个不同难度的排行榜 但是这将在新的更新中改变 我不再想使用所有这些 而只想使用其中之一 如何将新版本设置为仅使用这个新排行榜并隐藏其他排行榜 以便用户看不到它们 Thanks 根据 iTunes Connect 的数据 一旦
  • 如何创建仅包含静态单元格的集合视图? [复制]

    这个问题在这里已经有答案了 我想添加一个包含 7 个静态单元格的垂直集合视图 我知道如何动态地执行此操作 但我看不出这样做的理由 我必须使用 cellForRow 方法吗 我向我的 viewController 添加了一个集合视图 并添加了
  • 如何在 OauthSwift 库中设置回调 URL

    我正在开发一个项目 其中我正在实现 OAuthSwift 库以连接到同时使用 OAuth1 和 OAuth2 的多个不同社交网站 我已将应用程序设置为加载 Web 视图 将我带到我的社交网站 但我无法让应用程序重定向回来 一旦我加载我的凭据
  • 如何将按钮放置在 UITableView 上方(而不是导航栏中)?

    I am new to iphone programming I am learning uitableview at the moment I need to create an app that has buttons above ta
  • 从底部加载导航视图控制器

    我有四个 ViewControllers 其中 ViewControllers 使用以下方式加载UINavigationController 我能够一一切换到每个 ViewController 问题是 由于我使用的是 NavigationC
  • iphone - UISearchBar 上的搜索按钮

    我有一个使用 UISearchBar 的搜索功能 它是即时发生的 所以我认为用 完成 替换键盘上的 搜索 按钮会更明显 有没有办法做到这一点 thanks 您可以更改keyboardTypeUISearchBar 对象的属性 然而 没有办法
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • 橡皮擦在 iOS 绘图中不起作用

    我正在做一个绘图项目 其中有一个橡皮擦选项 下面给出的代码适用于我启动应用程序并绘制一些线条并继续使用橡皮擦时的代码 它工作正常 我得到了橡皮擦效果 现在第二种情况是我画了大约10条线 然后单击 撤消按钮 并撤消整个事情 然后我重做整个事情
  • UISlider 拇指中心位于轨道的起点和终点

    默认行为UISlider是它的拇指没有集中在轨道的开始 结束处 就像下面这样 我想修改它的行为以获得 拇指的中心可以位于起点或终点 我试图用空来覆盖开始 结束UIView 效果是看起来几乎没问题 但是拇指有阴影 显示了我在某些位置的黑客攻击
  • 哪个 API 可以替代 iCloud 中的 Core Data

    2016 年 6 月更新 截至 NSPersistentStoreCoordinator 的最新文档 与 iCloud 核心数据相关的所有内容都被标记为已弃用 因此 新的开发可能应该避免这种情况 使用 Core Data iCloud 和
  • iOS 7 故事板本地化与属性标签

    我正在使用 ibtool 从我的所有语言的基本情节提要中生成字符串文件 出于某种原因 ibtool 没有提取UILabel风格为 attributed 我没有这些标签的键 值对 有人知道为什么吗 我最终得出的结论是 使用 ibtool 无法
  • AppStore - 应用程序状态可供销售,但不在应用程序商店中

    应用程序准备销售状态仍为 6 月 9 日 就像那里https discussions apple com message 8147141 https discussions apple com message 8147141 应用程序链接
  • 修改曝光持续时间并返回 AVCaptureExposureModeContinouslyAutoExposure 后出现奇怪的行为

    我正在开发一个应用程序 该应用程序通过 iOS 8 中引入的新 API 公开相机的手动控制 并且我正在使用这个示例应用程序 https developer apple com library ios samplecode AVCamManu
  • 在 iOS 7 中创建 UUID 和 UDID

    我想创建 UUID 我下面有可以创建 UUID 的代码 如何在 iOS7 中创建具有多个供应商相同 ID 的 UDID NSString stringWithNewUUID CFUUIDRef uuidObj CFUUIDCreate ni
  • 在 NSData 和 base64 字符串之间转换

    在之间进行转换的最简单和最快的代码是什么NSData和一个base64字符串 我读过很多解决方案 其中大部分涉及添加另一个类等 我找到了一个很好的解决方案here http cocoawithlove com 2009 06 base64
  • 以编程方式在 iPhone 上使用彩信发送图像?

    搜遍全网都没有解决这个问题 我想用 iPhone 相机拍照 然后能够通过彩信 电子邮件发送出去 这不一定发生在我的应用程序中 但至少我希望能够调用彩信 电子邮件应用程序并使其选择拍摄 和存储 的图片 当我使用内置相册应用程序时 每张照片的左
  • iPhone OpenGLES 2.0 文本纹理带有奇怪的边框(不是笔划)问题

    我正在使用 CoreGraphcis 创建文本纹理 不幸的是 文本呈现如下 文本颜色与背景相同以展示奇怪的边框 我尝试过使用描边颜色和边框 我认为这是针对 OpenGLES 2 0 而不是 CoreGraphics Create defau
  • SwiftUI 多行文本背景颜色

    我在 SwiftUI 中有一个包含多行的文本视图 我知道我可以更改文本的背景颜色 Text

随机推荐