码迷,mamicode.com
首页 > 其他好文 > 详细

GCD同步问题

时间:2014-05-07 17:57:23      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

     现在许多iOS初学者在图片加载请求一块总是依赖第三方插件,表面上我们是省去了很多工作,但是遇到一点问题,可能我们花了10倍的时间去钻牛角尖,本人在iOS这一块,主力推荐在苹果框架的基础上做一些封装,这样的东西可能是我们更喜欢的东西,她完全可以胜任目前的许多工作,而且你的能力会比用三方库成长很多,孩子先学会自立,再学者去善假于物也。

    回归正题,iOS这一块多线程我们一般采用GCD,但用了GCD时,我们往往忘了与主线程同步,图片总是等很久才刷出来,代码来看一下。

bubuko.com,布布扣
 1  NSString *fileMD5Name = [EncryptionUtils getMd5_16Bit_String:leftTeacherItem.imgUrl];
 2     NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];
 3     __block NSData *data = [NSData dataWithContentsOfFile:[filePath stringByAppendingPathComponent:fileMD5Name]];
 4     
 5     if(data){
 6         cell.leftTeacherSingleView.imgvwIco.image = [UIImage imageWithData:data];
 7     }
 8     else{
 9         if(tableView.dragging==NO&&tableView.decelerating==NO){
10             dispatch_async(dispatch_get_global_queue(0, 0), ^{
11                 data = [NSData dataWithContentsOfURL:[NSURL URLWithString:leftTeacherItem.imgUrl]];
12                 if(data){
13                     [data writeToFile:[filePath stringByAppendingPathComponent:fileMD5Name] atomically:YES];
              //this async main 
14                     dispatch_async(dispatch_get_main_queue(), ^{
15                         cell.leftTeacherSingleView.imgvwIco.image = [UIImage imageWithData:data];
16                     });
17                     
18                 }
19                 else{
20                     //loading default img
21                     cell.leftTeacherSingleView.imgvwIco.image = [UIImage imageNamed:@""];
22                 }
23             });
24         }
25         else{
26             //loading default img
27         }
28     }
bubuko.com,布布扣

 

GCD同步问题,布布扣,bubuko.com

GCD同步问题

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/littleplayer/p/3709934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!