确定iOS扩展的内存限制
我正在开发一个iOS today扩展,它可以从UIPasteboard读取图像并将其保存在磁盘上。由于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(
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机型上测试我的应用程序,也不想冒在旧设备上崩溃的风险
非常感谢你的帮助 我刚刚开始查看通知服务扩展正在使用的内存。我找到了这个演示文稿。可能对其他人有帮助
您对此问题的解决方案是什么?我仍在使用我的旧逻辑。谢谢你的链接,我来看看。如果你有更好的解决办法,请告诉我。