私は(医師の画像、医師の名前)を示すUITableViewを持っています
cellForRowAtIndexPath関数では、次のように画像をフェッチしています。
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse * response,
NSData * data,
NSError * error) {
if (!error){
dispatch_async(dispatch_get_main_queue(), ^{
updateCell.DRImage.image = [[UIImage alloc] initWithData:data];
}];
問題は次のとおりです。下にすばやくスクロールすると、画像の読み込みが開始され、ほぼ 100 の画像が読み込まれます。次に、行をクリックして医師の詳細を表示すると、すべての画像が読み込まれるまでサーバーからデータを取得できません。読み込みを終了します (すべての非同期リクエストが終了するまで)。
次のコードを使用して、医師の詳細を取得しています。
SoapCall *Obj = [[SoapCall alloc] init];
NSString* Url=[[NSString alloc] initWithFormat:@"%@/doctorsDetails.php?i=%@" , ServerUrl ,DoctorDataFromTableView.Doctor_ID];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
[Obj CallUrl:Url OnCompletion:^(NSMutableArray * Results , NSError * Error){
dispatch_async(dispatch_get_main_queue(), ^{
Nviews.text =[[Results objectAtIndex:0] objectForKey:@"numViews"];
NComments.text =[[Results objectAtIndex:0] objectForKey:@"totComments"];
});
}];
注: SoapCall は、サーバーに非同期要求を行うために作成したカスタム クラスです。
私の質問は: 画像の読み込みをキャンセルする方法はありますか?
または、ドクターの詳細を別のスレッドにロードできますか???