LoginSignup
13
13

More than 5 years have passed since last update.

【Swift】SDWebimageのcompletionバグ対応

Last updated at Posted at 2015-02-25

■ 概要

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を取得使用とした結果エラーが発生。

Swift

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を取得可能だったので、変更。

Swift

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
その辺調査中です、何か分かったら追記させていただきます。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13