一、创建多线程的五种方式 |
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];} }
出处:http://www.cnblogs.com/jerehedu/
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。