Objective c 使用NSMutableDictionary缓存图像

Objective c 使用NSMutableDictionary缓存图像,objective-c,Objective C,我正在尝试创建一个应用程序,它可以从网络上浏览各种图像,并将它们缓存到iPhone上以供脱机使用。我目前使用的代码是: NSMutableDictionary *Cache; - (UIImage *)CachedImage: (NSString*)url { UIImage *image = [Cache objectForKey:url]; if (image == nil) { image = [UIImage imageWithData:[NSData dataWithC

我正在尝试创建一个应用程序,它可以从网络上浏览各种图像,并将它们缓存到iPhone上以供脱机使用。我目前使用的代码是:

NSMutableDictionary *Cache;
- (UIImage *)CachedImage: (NSString*)url {
    UIImage *image = [Cache objectForKey:url];
if (image == nil) {
    image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
    [Cache setObject:image forKey:url];
    //NSLog (@"Stored");
    return image;
} else {
    //NSLog (@"Taken");
    return image;
} }
我调用函数并使用下面的代码条将图像放入ImageView中

    [self.imageView setImage:[self CachedImage:url]]; // Change url to desired URL.
使用NSLog,我发现的问题是代码实际上没有存储该值,因为该值总是读取nil。为什么会这样?还有其他存储图像以供脱机使用的方法吗? 提前谢谢

-Gon

您正在寻找的

恩斯卡 在这里查看:

可怜的NSCache,总是被NSMutableDictionary在 最不恰当的情况。好像没人知道它在那里, 准备好提供所有垃圾收集行为了吗 开发人员煞费苦心地重新实现自己


使用NSCache缓存UIImage。您还可以在本地保存图像(如果您在多次启动过程中多次重复使用这些图像),这样每当您的应用程序关闭或刷新缓存时,您都可以立即从本地目录获取图像