IOS开发中多线程的使用
作者:网络转载 发布时间:[ 2015/3/24 14:19:41 ] 推荐标签: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];
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11