0

+UIImagesetImageWithURL:メソッドの使用で問題が発生しました。私がやりたいのは、最初にサムネイル画像の非同期リクエストを送信することです。この画像は非常に小さいため、かなり速く読み込まれるはずです。また、読み込みに少し時間がかかるため、高解像度バージョンの画像をダウンロードするための別の非同期リクエストを送信したいと思います。

私はそれが次のようなものになると思いました:

NSURL *thumbURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/thumbs/%@.png", name]];
[imageView setImageWithURL:thumbURL placeholderImage:[UIImage imageNamed:@"PHImage.png"]];

NSURL *hiRezURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/%@.png", name]];
[imageView setImageWithURL:hiRezURL];

しかし、それは高解像度の画像をロードするだけで、時間がかかりすぎます。助言がありますか?

4

1 に答える 1

1

実装をUIImageView+AFNetworking.m見ると、プロパティが宣言されていることがわかります。

@property (readwrite, nonatomic, retain, setter = af_setImageRequestOperation:) AFImageRequestOperation *af_imageRequestOperation;

そして、- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImageメソッドが最初に行うこと(実際には最初に呼び出す-setImageWithURLRequest:placeholderImage:success:failure:)は[self cancelImageRequestOperation];、クラスプロパティの操作を実際にキャンセルすることaf_imageRequestOperationです。

つまり、(3行目で)メソッドを再度呼び出すと、1行目の操作がキャンセルされます。

+ imageRequestOperationWithRequest:imageProcessingBlock:success:failure:より良いアプローチは、成功ブロックで画像ビューの画像を使用して設定する場合です。[operation start];このメソッドを使用する場合は、後で呼び出す必要もあると思います。

それが役に立てば幸い。

于 2012-07-23T19:16:23.993 に答える