■ 概要
Objective-cのimageCacheライブラリである SDWebImage をSwiftで利用した際のバグ対応をメモ。
◆環境
Xcode: v6.1.1
Swift: v1.1
CocoaPods: 0.36.0.beta.2
SDWebImage: 3.7.1
Bridge-headerからライブラリを利用しています。
◆バグ内容
下記メソッドを利用した際のcompletionブロックが実行されない。
というか、この定義をしているスコープに差し掛かった時点で、エラーがでます。
※エラー内容はまだSwift君が未熟なので詳細に追いづらく、見ていません!
下記でもろもろ討論されている様です。
https://github.com/rs/SDWebImage/issues/833
■ 対応内容
下記コードでcompletionからimageを取得使用とした結果エラーが発生。
var uiimageview = UIImageView()
uiimageview!.sd_setImageWithURL(url, completed: { (image: UIImage!, error: NSError!, cacheType: SDImageCacheType!, imageURL: NSURL!) in
if error != nil {
Log("http get failure: \(error)")
return
}
handler(image)
})
※handlerは引数がUIImageの何かしらのメソッド
代わりに下記でimageを取得すればcompletedブロックからimageを取得可能だったので、変更。
SDWebImageDownloader.sharedDownloader().downloadImageWithURL(NSURL(string: url), options: nil, progress: nil, completed: {[weak self] (image, data, error, finished) in
if let wSelf = self {
handler(image)
}
})
※handlerは引数がUIImageの何かしらのメソッド
■ 所感
ググると結構上記のバグが目立っていたので、そのうちバグフィックスする事を期待。。
くわえて、上記のダウンロード手法の場合、そもそもキャッシュが効いているのか疑問ですww
その辺調査中です、何か分かったら追記させていただきます。