2

に埋め込まれsetImageWithURLた画像を遅延読み込みしています。UIImageViewUIScrollView

これはフォトギャラリーであるため、「success」コードブロックを使用して、myScrollView正しくズームできるように、完全に読み込まれた後にのcontentSizeとimageviewのフレームを設定しようとしています。

問題は、呼び出しで「success」を使用すると奇妙なエラーが発生し続けることです。メソッドの成功/失敗の部分をコメントアウトすると、機能しますが、画像の読み込みがいつ終了するかわからないため、コンテナのサイズを正しく設定できないため、適切にズームされます...ヘルプ?

エラー:

タイプ(別名)'void (^)(UIImage *__strong)'のパラメータに送信する互換性のないブロックポインタタイプ'SDWebImageSuccessBlock''void (^)(UIImage *__strong, BOOL)'

次のコードで受け取るエラーは@で始まる行success:^ですか...

コード:

 [_ivFullSize setImageWithURL:[NSURL URLWithString:[currentPhoto PhotoAbsoluteLocation]]
placeholderImage:[UIImage imageNamed:@"loading.png"]
success:^(UIImage *image){
                         [DejalBezelActivityView removeViewAnimated:YES];
                         self.myScrollView.contentSize = self.ivFullSize.image.size;
                         self.ivFullSize.frame = CGRectMake(0, 0,     self.ivFullSize.image.size.width, self.ivFullSize.image.size.height);
                     }
                     failure:^(NSError *error){
                                    [DejalBezelActivityView removeViewAnimated:YES];
                     }];
4

1 に答える 1

5

SDWebImageバージョンを最新バージョンにアップグレードした後、最近同じ問題が発生しました。なぜこれが起こっているのかわかりませんが、関数ブロックの文書化されていない変更であると思います。基本的に、関数は追加のブールパラメータを返します。

そのため、問題の理由を知らずに、ブロックに新しいブールパラメータを追加するだけで問題を解決しました。書く代わりに

...
success:^(UIImage *image)
{
  ... do something with image
}
failure:^(NSError *error)
...

私は以下を使用しました:

...
success:^(UIImage *image, BOOL dummy)
{
  ... do something with image and ignore dummy
}
failure:^(NSError *error)
...

これにより、発生したエラーは削除されますが、追加のブール変数の性質については疑問が残ります。追加のドキュメントや説明をいただければ幸いです。ここのドキュメントはまだ古いバージョンを参照しています。

于 2012-10-25T16:30:35.473 に答える