我正在构建一个数据存储,以跟踪存储在我的应用程序中的所有远程图像。我决定使用一个单例来跟踪所有被引用的图像。
我记得,iOS 会根据最近的使用情况自动开始从内存中清除对象,无论它是否被当前视图控制器引用等等。但是,如果我将这些图像存储在数据存储中,这些对象总是被引用商店本身。我的内存管理解决方案是跟踪上次调用图像的时间,并对存储在数据存储中的图像的数量和大小保持某种形式的限制,并根据年龄清除最旧的图像。
这个解决方案是一个好的解决方案吗?为什么或者为什么不?我应该依赖苹果的自动内存管理,还是让我自己的经理好吗?
进一步说明:
以下是从我的一个视图控制器请求图像最终将如何使用我的解决方案:
[[HollerImages store]getImageWithUrl:@"https://www.google.com/logos/classicplus.png"
completionBlock:^(BOOL succeeded, UIImage *image){
if( succeeded ){
//Update the UIImageView with the returned image
}
}];
然后,商店将管理应用程序中当前引用的图像数量,并在我们达到某个预定义的限制时自动取消引用旧图像。想法?