IOS开发中多线程的使用

发表于:2015-3-24 10:28

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杰瑞教育    来源:51Testing软件测试网采编

  一、创建多线程的五种方式
  1.开启线程的方法一
  NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_update) object:nil];
  2.开启线程的方法二
  [NSThread detachNewThreadSelector:@selector(_update) toTarget:self withObject:nil];
  3.开启线程的方法三
  [self performSelectorInBackground:@selector(_update) withObject:nil];
  4.开启线程的方法四
  NSOperationQueue *queue=[[NSOperationQueue alloc] init];
  [queue addOperationWithBlock:^{
  for(int i=0;i<50;i++){
  printf("子线程\n");
  }
  }];
  5.开启线程的方法五
//第一步开启线程池
NSOperationQueue * queue=[[NSOperationQueue alloc] init];
//设置并发数目
[queue setMaxConcurrentOperationCount:2];
//第二部创建多线程添加到线程池
NSInvocationOperation * thread1=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update1) object:nil];
NSInvocationOperation *thread2=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update2) object:nil];
[thread1 setQueuePriority:NSOperationQueuePriorityVeryLow];
[thread2 setQueuePriority:NSOperationQueuePriorityVeryHigh];
[queue addOperation:thread1];
[queue addOperation:thread2];
  二、多线程应用实例,加载图片。
  1.核心思想
  考虑到如果加载网络图片会延迟,在一个主线程加载会影响控件的渲染,此时可以采取多线程,异步加载完成后刷新UI。
  2.实现思路
  通过为UIImageView 增加类目来实现多线程下载。
  主要代码:
#import "UIImageView+thread.h"
@implementation UIImageView(load)
- (void) setImageWithUrl:(NSString *)url{
[self performSelectorInBackground:@selector(_loadImage:) withObject:url];
}
- (void) _loadImage:(NSString *)u{
@autoreleasepool {
NSURL *url=[NSURL URLWithString:u];
NSData *data=[NSData dataWithContentsOfURL:url];
UIImage *image=[UIImage imageWithData:data];
[self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
}
}
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号