2011-11-08 285 views
16

我建立一個相冊的應用程序,並找到一些圖像緩存庫,即:iOS的哪個圖像緩存庫?

什麼人,你會推薦(或其他庫不在名單上)?我要找:

  • 效率
  • 最小的努力在垃圾回收方面
  • 支持塊首選

感謝

+0

[ZDS_Shared](https://github.com/ZarraStudios/ZDS_Shared)具有帶寬限制功能,但沒有同步請求(也就是說,緩存未決時,它將返回零資源)。它適用於操作隊列,所以我想你可以用NSInvocation來添加一個調用。 – Jano

回答

15

我個人認爲SDWebImage是最好的,因爲它是絕對的努力解決方案,並提供了最簡單的緩存處理機制,因爲它只是UIImageView類的擴展。

+2

編譯SDWebImage的時間真的少於10分鐘,選擇幷包含正確的庫並添加該行以使用它。輝煌! – axello

+0

試試SmartStorage(github.com/Alterplay/APSmartStorage)。它會自動將UIImage/NSData緩存在磁盤或內存中。這非常聰明。 – slatvick

+0

我們現在在2014年,這個lib有一個愚蠢的錯誤,它不顯示文件名中包含點的圖像 –

11

圖像異步下載和緩存不是一項簡單的任務。它需要做得好,否則它會打敗它的目的。所以我強烈建議你最終建立自己的。話雖如此,我需要一個快速而簡單的解決方案,以推進應用程序的開發。

我發現這些解決方案:

我試過HJCache,但是事實並非如此在提供很好的滾動性能時處理大圖像(1.5M +)。對於小圖像,它的工作很好,但。嘗試了兩個LazyTableImages,但整合並不簡單。

最終,我選擇了SDWebImage。整合不可能更簡單。將圖書館鏈接到項目後,您只需要:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

在您的tableView:cellForRowAtIndexPath:中。

此外:

  • 工程與定製單元以及
  • 不會阻塞UI
  • 提供了巨大的滾動性能
  • 圖片下載和緩存是無縫的。
0

我試過使用SDWebImage。

同意這很容易整合。

然而,這個庫的一個大問題是它沒有兌現「最大年齡」緩存控制。

圖書館仍在開發中,但他們沒有選擇這個限制。

2

也試試APSmartStorage。它會自動將UIImage/NSData緩存在磁盤或內存中。

它有可愛的塊式API;

// setup data parsing block 
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url) 
{ 
    return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale]; 
}; 
... 
// show some progress/activity 
... 
// load object with URL 
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL callback:(id object, NSError *error) 
{ 
    // hide progress/activity 
    if (error) 
    { 
     // show error 
    } 
    else 
    { 
     // do something with object 
    } 
}]; 

這是相當聰明,還是簡單:

enter image description here

0

我強烈建議你嘗試KingfisherSDWebImage。兩者都適用於從網絡下載和緩存圖像。