我错过了什么吗?不允许它与UIImage一起使用比UIImageView更通用吗?您可以将UIImage用于处理并将其用于不同的事物,其中UIImageView实际上只能添加到视图中。
我最初的想法是,如果你把它交给另一个类并且UIImage还没有加载,它会收到nil
并且不会传递任何新内容。但是,如果你传递一个UIImageView,同样适用它吗?
答案 0 :(得分:4)
你是对的,AFNetworking类别实现(UIImageView + AFNetworking)很简单。
但是你错过了AFImageResponseSerializer,它会对图片进行验证和解码,并提供一些处理它们的选项。 (在旧的1.x版本的AFNetworking中,此功能位于AFImageRequestOperation。)
同样,您只关注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 加载之前,不会调用完成块。