更有效地保存图像,以减少内存使用



我正在观察粘贴板的变化,其中包括图像。我可以使用的内存量是有限的,所以大多数图像都会因为它们的大小而导致程序崩溃。有可能更有效地储存它们吗?

目前我正在使用这个代码来存储它们:

for (UIImage* image in [_pasteboard images]) {
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
}

在这个循环中,所有这些图像都保留在内存中,这会导致内存使用问题。您可以通过在循环中添加自动释放池来提供帮助:

for (UIImage* image in [_pasteboard images]) {
@autoreleasepool {
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
}
}

这将导致每个图像的内存在当前循环结束时被回收。

我正在删除";核心数据";标签,因为这个问题与核心数据无关。

我通过让一个具有更多内存的不同进程来完成这项工作,从而解决了这个问题。原来的流程现在只发送一个通知。

最新更新