2012-05-30 50 views
1

總之,我正在尋找一種方式來使用以前緩存的圖片作爲我在AFNetworking的UIImageView的品類佔位:AFNetworking +緩存圖像佔位符

- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest 
      placeholderImage:(UIImage *)placeholderImage 
        success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success 
        failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure 

示例使用情況

我有一個型號命名爲Post,我從API響應填充:

@interface Post : NSObject 
    @property ... NSString *smallImagePath; 
    @property ... NSString *largeImagePath; 
    @property ... NSString *description;  
@end 

我的第一個ViewControlle r將爲我的所有Post對象顯示縮略圖網格(通過smallImagePath屬性檢索)。輕擊縮略圖會將您帶到DetailViewController,其中大圖像將最終與描述一起顯示。

由於我已經下載並緩存了小縮略圖,因此我希望將它用作佔位符,同時等待下載大圖像。在這一點上,我無法弄清楚如何進入AFImageCache,因爲它不公開。

有一件事我認爲是存儲被作爲成功的塊中的參數傳遞的UIImage:

// add property to Post model 
@property ... UIImage *smallImage; 

success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
    [self.post setSmallImage:image]; 
} 

,然後我可以在我下載大圖直接使用該圖像作爲佔位符。

我不確定這是否會對我的記憶足跡有任何明顯/負面影響,儘管保留對一大堆UIImage的引用。你能想出更好的方法嗎?

回答

0

結束了我最初的想法,即將圖像作爲屬性存儲在我的模型上。這樣,當需要在更大的圖像加載時聲明佔位符時,我只需訪問該屬性。表現非常好。