Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定iOS扩展的内存限制_Ios_Core Graphics_Ios Extensions - Fatal编程技术网

确定iOS扩展的内存限制

确定iOS扩展的内存限制,ios,core-graphics,ios-extensions,Ios,Core Graphics,Ios Extensions,我正在开发一个iOS today扩展,它可以从UIPasteboard读取图像并将其保存在磁盘上。由于iOS扩展无法使用太多内存,因此此过程在处理大型映像时失败。为了解决这个问题,我首先检查图像的大小,然后尝试决定小部件是否可以保存它,或者应该将此任务委托给它的主机应用程序: let MAXIMUM_IMAGE_SIZE_BYTES = <SomeMagicNumber> if let clipboardImage = UIPasteboard.generalPasteboard(

我正在开发一个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
    }
}
让最大\u图像大小\u字节=
如果让clipboardImage=UIPasteboard.generalPasteboard().image{
设imageSize=CGImageGetHeight(clipboardImage.CGImage)*CGImageGetBytesPerRow(clipboardImage.CGImage)
如果imageSize>最大\u图像大小\u字节{
//打开主机应用程序以保存图像
}
否则{
//直接保存图像
}
}
我有以下问题:

  • 我的尺码计算正确吗?我是从你那儿拿的。由于上面提到的内存限制,我无法实例化JPEG或PNG表示并读取其大小
  • 我可以去掉最大图像大小(以字节为单位)的神奇数字吗?如果没有,我可以使用苹果公司的任何官方规范吗?我无法在所有可用的iOS机型上测试我的应用程序,也不想冒在旧设备上崩溃的风险

非常感谢你的帮助

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


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

我仍在使用我的旧逻辑。谢谢你的链接,我来看看。如果你有更好的解决办法,请告诉我。