ImageCache-bennyguitar 1.0.0

ImageCache-bennyguitar 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未指明的 维护。



  • BenGordon

ImageCache

一个共享缓存类,将 UIImages 保存到 Key/Value 存储中,并在加载时设置 UI Elements 的图像。此类还实现了 LRU 清理以实现智能内存管理。

设置

  • 将包含的 ImageCache.{h,m} 拖放到您的项目中。
  • ImageCache.h 导入您将加载图像的任何类中。
  • 需要 ARC

如何使用

加载图像

ImageCache 极为简单易用。目前它处理两种设置 UIImage 的情况:UIImageView 和 UIButton。这里您只需要两样东西:一个 UIImageView/UIButton 和一个图像的 URL。为了在不阻塞 UI 线程的情况下懒加载数据,您的代码将类似于以下内容

// Your UIImageView and UIButton
UIImageView *imgView = [[UIImageView alloc] init];
UIButton *btn = [[UIButton alloc] init];

// Your Image URL
NSURL *url = [NSURL URLWithString:@"http://newleaderscouncil.org/sanfrancisco/wp-content/uploads/2013/01/1.jpg"];

// Now Load it!
[imgView setImageFromURL:url];
[btn setImageFromURL:url forState:UIControlStateNormal];

就是这样。ImageCache 会检查缓存,获取在其中保存的 UIImage,或者如果找不到,就会去网络下载图像,并在下载完成后设置它。

清除缓存

提供了两种从缓存中删除项的选项,要么通过最近最少使用 (LRU),要么清除整个缓存。最近最少使用方法接受一个整数参数,并从缓存中删除那么多的项(最多是缓存的总数)。这通过检查图像的访问日期来实现,无论是从网页加载还是从缓存加载,并删除最近最少使用的那些。这两种方法都可以像这样使用

// Removing the 4 most recently used images
[ImageCache dumpLeastRecentlyUsed:4];

// Removing all items from the cache
[ImageCache dumpCache];

理想情况下,您应该在 ViewController 的 didReceiveMemoryWarning 方法或 App Delegate 中在进入后台之前调用这些方法 applicationDidEnterBackground:(UIApplication *)application 方法。

设计注意事项

对我来说,设计方案的一部分是去除冗长的方法和调用,另一部分是每个App只使用一个ImageCache。为了遵循这些指导方针,我创建了ImageCache,使其只能使用操作[ImageCache sharedCache]实例的类方法。这意味着函数调用最终会变成类似这样[ImageCache dumpCache]的形式,而不是[[ImageCache sharedCache] dumpCache],这可能是更符合Objective-C传统的做法。如果您想在单个应用程序中使用多个ImageCache类(谁知道呢,你可能真的想这么做),我建议将这些方法转换为实例方法,并将所有[ImageCache sharedCache]的提及更改为self。这样,您就可以在应用程序中使用多个缓存实例了。

许可证

此存储库采用标准的MIT许可证。