NSThread使用具体说明

经常会遇到这样的问题——tableview中展示来自网络的图片,每一个cell中格式“图片+文字”,全部一起下载的时候容易阻塞UI线程,因此需要线程NSthread解决这个问题。

网上有很好的例子,其中一篇是 NSthread用法 http://www.cocoachina.com/bbs/simple/?t63541.html ,这篇开发讨论区中讨论了如何使用NSthread,以及谈论到dispatch_async和nsthread,dispatch_async中具体例子中为什么界面滞后的原因。

[NSThread detachNewThreadSelector:@selector(函数名) toTarget:self withObject:参数名]; withObject,这个后面的参数名是函数downloadImage后面自带的参数!要一一对应!

1)withObject带参数: 

//开一个NSThread 
-(void)test:(NSString *)ic{

    [NSThread detachNewThreadSelector:@selector(downloadImage:) toTarget:self withObject:ic]; 

}

//下载图片

  - (void)downloadImage:(NSString *)ic{
        NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; 

        if(图片为空){

             网络下载图片过程

        }
       //回到主线程 
       [self performSelectorOnMainThread:@selector(updateImage) withObject:ic waitUntilDone:YES]; 
       [pool release]; 
   }

 

 

 

//完成下载图片,更新图片

-(void)updateImage{

      更新图片到相应的界面的图片控件上

}

2)withObject不带参数:

//开一个NSThread 
-(void)test::(NSString *)ic{

    [NSThread detachNewThreadSelector:@selector(downloadImage) toTarget:self withObject:nil]; 

//执行方法 
  - (void)downloadImage{
        NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; 
       //回到主线程 
       [self performSelectorOnMainThread:@selector(updateImage) withObject:nil waitUntilDone:YES]; 
       [pool release]; 
   }

//完成下载图片,更新图片

-(void)updateImage{

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值