为什么所有异步图像加载(SDWebImage,AFNetworking)库都使用UIImageView而不是UIImage?

时间:2014-02-18 04:03:03

标签: ios objective-c uiimageview afnetworking sdwebimage

我错过了什么吗?不允许它与UIImage一起使用比UIImageView更通用吗?您可以将UIImage用于处理并将其用于不同的事物,其中UIImageView实际上只能添加到视图中。

我最初的想法是,如果你把它交给另一个类并且UIImage还没有加载,它会收到nil并且不会传递任何新内容。但是,如果你传递一个UIImageView,同样适用它吗?

1 个答案:

答案 0 :(得分:4)

AFNetworking

你是对的,AFNetworking类别实现(UIImageView + AFNetworking)很简单。

但是你错过了AFImageResponseSerializer,它会对图片进行验证和解码,并提供一些处理它们的选项。 (在旧的1.x版本的AFNetworking中,此功能位于AFImageRequestOperation。)

SDWebImage

同样,您只关注SDWebImage的基本实现。这里有很多选项,所以我建议你复习一些其他类,但在最基本的层面上,你可以得到这样的UIImage:

SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:imageURL
                 options:kNilOptions
                 progress:^(NSUInteger receivedSize, NSUInteger expectedSize)
                 {
                     // update a progress view
                 }
                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
                 {
                     if (image)
                     {
                         // Do something with the image; cacheType tells you if it was cached or not.
                     }
                 }];

异步加载

  

如果你把它交给另一个班并且UIImage还没有加载怎么办?

嗯,它全部异步加载,因此在UIImage 加载之前,不会调用完成块。