0

我正在尝试创建一个应用程序来处理来自网络的各种图像,并旨在将它们缓存到 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,我发现的问题是代码实际上并没有存储该值,因为该值始终读取为零。为什么会这样?还有其他存储图像以供离线使用的方法吗?提前致谢。

-贡

4

2 回答 2

0

你正在寻找

NSCache

在这里查看:http: //nshipster.com/nscache/

可怜的 NSCache,在最不合适的情况下总是被 NSMutableDictionary 所掩盖。就像没有人知道它在那里一样,随时准备提供开发人员煞费苦心地重新实现自己的所有垃圾收集行为。

于 2012-08-20T20:52:38.623 回答
0

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

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSCache_Class/Reference/Reference.html

于 2012-08-20T20:53:23.997 回答