私は、これは非常に古いスレッドです知っているが、最近、私はSDWebImageランダムクラッシュがたくさんあったので、私は私自身の遅延ロードとキャッシュメカニズムを実装する必要がありました。それはかなりうまくいく、私は重い負荷の場合にそれをテストしていない。だからここに私はそれを使用する方法に続いての.hと.mファイルのファイルです:私が使用
// UIImageView+CustomCache.h
@interface UIImageView(CustomCache)
-(void)startAsyncDownload:(UIImage*)placeHolderImage imageUrlString:(NSString*)imageUrlString;
@end
// UIImageView+CustomCache.m
#import "UIImageView+CustomCache.h"
@implementation UIImageView(CustomCache)
-(void)startAsyncDownload:(UIImage*)placeHolderImage imageUrlString:(NSString*)imageUrlString{
self.image = placeHolderImage;
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:
[NSURL URLWithString:imageUrlString]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionHandler){
@autoreleasepool {
if (connectionHandler != nil) {
NSLog(@"error in downloading description %@",connectionHandler.localizedDescription);
} else {
ImagesCacheHandler *ref = [ImagesCacheHandler new];
UIImage *imageFromData = [[UIImage alloc] initWithData:data];
if (imageFromData != NULL && imageFromData != nil && data.length > 0) {
self.image = imageFromData;
//custom store to sqlite
[ref archiveImage:imageUrlString imageData:data moc:[ref fetchContext]];
}
}
}
}];
}
@end
そして、私のテーブル内のビュー(私はもちろんUIImageView + CustomCache.hをインポート)
UIImageView *imageViewToLazyLoad = (UIImageView*)[cell viewWithTag:1];
[imageViewToLazyLoad startAsyncDownload:[UIImage [email protected]"palce_Holder_Image_name"] imageUrlString:imageUrl];
ください。可能であれば、クラッシュログを投稿してください。 –
私の答えを見てください。私が提案したライブラリは完璧に動作します。実装方法がわからない場合はお知らせください。 –
まだ解決されていない場合。 JImage.hを使用するとJImage.mは私が投稿したどのような状況でも助けになります。コピーして貼り付けるだけで自動的に動作します。これは、私が実装していて、画像の読み込みを怠ってもうまく動作する非常に効果的なクラスです(非同期ダウンロード) – Kuldeep