2012-03-11 8 views
0

私は画像をダウンロードするアプリを手に入れました。私はこのようにします:URLからuiimageに変換中に一時停止

NSString *imgURL = [@"http://www.kwikspik.com/static/" stringByAppendingString:spikFromTopic.user_image]; 
     NSData *imgData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:imgURL]]; 
     UIImage *image = [[UIImage alloc] initWithData:imgData]; 
     UIImageView *userImage =[[UIImageView alloc] initWithFrame:CGRectMake(20,size,userImageSize,userImageSize)]; 
     userImage.image = image; 

このコードは本当に長い時間の実装です。

インターネット接続に問題がありますか?多分私のコードで?

+1

同期または別のスレッドでイメージをロードしようとしますか?http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation – pkyeck

答えて

0

画像データを取得するために同期呼び出しを行っています。これは、この期間中はメインスレッド(UIスレッド)がブロックされたままであることを意味します(これはスレッドから呼び出されていないことを意味します。 。あなたは、非同期を使用することができます呼び出しが返されるまで、何でもする(非これを行う方法を阻止するグランドセントラル派遣(GCD)

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{   
// This runs in background    

NSData *imgData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:imgURL]]; 
     UIImage *image = [[UIImage alloc] initWithData:imgData];    


     dispatch_async(dispatch_get_main_queue(), ^{       
      //This block runs on main thread, so update UI 
      UIImageView *userImage =[[UIImageView alloc] initWithFrame:CGRectMake(20,size,userImageSize,userImageSize)]; 
     userImage.image = image; 
      });  
    }); 

それともsendAsynchronousRequestのようなAPIをチェックアウトを使用した一例:キュー:NSURLConnection

でcompletionHandler
関連する問題