4

我正在开发一个 iOS Today 扩展,它可以从 UIPasteboard 读取图像并将其保存在磁盘上。由于 iOS 扩展无法使用太多内存,因此此过程会因大图像而失败。为了解决这个问题,我首先检查图像的大小并尝试决定小部件是否可以保存它或者应该将此任务委托给它的主机应用程序:

let MAXIMUM_IMAGE_SIZE_BYTES = <SomeMagicNumber>

if let clipboardImage = UIPasteboard.generalPasteboard().image {
    let imageSize = CGImageGetHeight(clipboardImage.CGImage) * CGImageGetBytesPerRow(clipboardImage.CGImage)
    if imageSize > MAXIMUM_IMAGE_SIZE_BYTES {
        // Open host app to save image
    }
    else {
        // Save image directly
    }
}

我有以下问题:

  • 我的尺寸计算是否正确?我从这个线程中得到它。由于上述内存限制,我无法实例化 JPEG 或 PNG 表示并读取其大小。
  • 我可以摆脱那个以字节为单位的最大图像大小的幻数吗?如果没有,我可以使用 Apple 的任何官方规格吗?我无法在所有可用的 iOS 型号上测试我的应用程序,也不想冒险在旧设备上崩溃。

非常感谢你的帮助!

4

1 回答 1

1

我刚刚开始研究通知服务扩展正在使用的内存。我找到了这个演示文稿。可能对其他人有帮助。

https://cocoaheads.tv/memory-use-in-extensions-by-conrad-kramer/

您对此问题的解决方案是什么?

于 2017-03-23T17:43:33.310 回答