确定iOS今天扩展的内存限制

时间:2015-05-28 14:31:03

标签: ios core-graphics ios-extensions

我正在开发一个iOS今天的扩展,可以从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
    }
}

我有以下问题:

  • 我的尺寸计算是否正确?我从this thread拿走了它。由于上面提到的内存限制,我无法实例化JPEG或PNG表示并读取其大小。
  • 我可以删除最大图像大小的神奇数字(以字节为单位)吗?如果没有,我可以使用Apple的官方规格吗?我无法在每个可用的iOS型号上测试我的应用程序,也不想冒旧设备崩溃的风险。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我刚刚开始查看通知服务扩展正在使用的内存。我找到了这个演讲。可能对别人有帮助。

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

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