我将SDWebImage与进展结合使用。
我在‘`init()构造函数中使用了以下代码:
if let url: NSURL = NSURL(string: previewCard.getImageUrls().getWithInt(0) as! String) {
self.imageView?.setImageWithURL(url, placeholderImage: MGImage.imageWithColor(UIColor.clearColor()), options: SDWebImageOptions.RefreshCached, completed: { (image:UIImage!, error:NSError!, type:SDImageCacheType, loadUrl:NSURL!) -> Void in
println("-------------- done")
}, usingActivityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
}控制台输出是:
println("-------------- done")
println("-------------- done")
println("-------------- done")
println("-------------- done")为什么整个闭包被调用了四次?我如何防止它被称为四次呢?
编辑:我验证了init()方法只调用了一次。无论我在哪里调用setImageWithUrl方法,都至少会调用两次完全闭包。
发布于 2015-07-08 15:38:02
这是因为您指定了"RefreshCached“。查看文档这里。特别是在SDWebImageRefreshCached下的这一行:
对缓存的映像调用一次完成块,然后用最后的映像调用一次。
所以你应该至少有两次回调。由于您得到的是四个回调,而不是两个回调,所以我想您要么会收到错误(所以请检查"error“param是否告诉您任何有用的信息),要么您正在刷新大型图像,并在此过程中获得了一些进度更新。无论如何,最后一个回调将包含您想要的刷新图像。
https://stackoverflow.com/questions/31292184
复制相似问题