0

アプリでのコンテンツの読み込みに問題があります。データはアプリによってフェッチされますが、画像の読み込みに時間がかかります。後で画像を読み込む可能性はありますか。コードは以下のとおりです。

NSDictionary *dict=[discussionArray objectAtIndex:indexPath.row];
UIImageView *avatarimage = (UIImageView *)[cell viewWithTag:4];
NSString *photoStrn=[dict objectForKey:@"photo"];

 dispatch_async(dispatch_get_global_queue(0,0), ^{
                   NSString *u=[NSString stringWithFormat:@"http://%@",photoStrn];
                   NSURL *imageURL=[NSURL URLWithString:u];
                   NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
                   dispatch_sync(dispatch_get_main_queue(), ^{
                   UIImage *dpImage = [UIImage imageWithData:imageData];
                   if (dpImage==nil)
                   {
                     dpImage = [UIImage imageNamed:@"profileImage.png"];
                   }
                   avatarimage.image = dpImage;

        });

詳細が必要な場合は、提供します:)

4

3 に答える 3

4

これを行うためにGCDを使用できます:

dispatch_async(dispatch_get_global_queue(0,0), ^{
     for (NSDictionary *dic in discussionArray)
     {
        NSString *photoStr=[dic objectForKey:@"photo"];
        NSString * photoString=[NSString stringWithFormat:@"http://%@",photoStr];
        UIImage *dpImage =  [UIImage imageWithData: [NSData dataWithContentsOfURL:[NSURL URLWithString:photoString]]];
        if (dpImage==nil)
        {
            dpImage = [UIImage imageNamed:@"profileImage.png"];
        }
     }
});
于 2013-03-14T11:12:45.720 に答える
0

ここで SDWebImageを取得し、それをプロジェクトに追加してインクルードします

UIImageView+WebCache.h

クラス実装ファイルで

UIImageView *imag=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 40, 40)];
[imag setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[[jsonarray objectAtIndex:indexPath.row]valueForKey:@"imgurl"]]] placeholderImage:[UIImage imageNamed:@"Icon@2x.png"]];
[self.view addSubview:imag];
[imag release];

SDWebImage は、URL から画像を読み込む場合により便利です。

お役に立てれば !!!

于 2013-03-14T11:07:41.413 に答える
0

ジェームズ、

この行により、

[NSData dataWithContentsOfURL:[NSURL URLWithString:photoString]]]

メインスレッドで同期ネットワーク呼び出しを行います。現在のスレッドは、ネットワーク呼び出しが完了するまでハングします。

解決策は、非同期ネットワーク呼び出しを行うことです。AFNetworkingライブラリは、画像を非同期的にロードするための優れたカテゴリを提供します: UIImageView +AFNetworking

于 2013-03-14T11:08:21.647 に答える