标题 | IOS开发中多线程的使用 |
内容 | 一、创建多线程的五种方式 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("子线程 "); } }]; 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]; } } |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。