我有一个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是我用来向服务器发出异步请求的自定义类
我的问题是: 有没有办法取消加载图像???
或者我可以在不同的帖子中加载Doctor详细信息???
答案 0 :(得分:0)
我发现了一个很棒的项目,即“SDWebImage”
https://github.com/rs/SDWebImage
它以非常先进的方式使用NSoperationQueue
和NSOperation
这个项目为我节省了很多时间