博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSThread基本用法
阅读量:6095 次
发布时间:2019-06-20

本文共 1738 字,大约阅读时间需要 5 分钟。

hot3.png

1、创建线程

第一种创建方式: alloc init特点:(1) 需要手动开启线程;(2) 可以拿到线程对象,进行详细设置; NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(showmsg) object:nil]; [thread start];iOS10方法 NSThread *thread = [NSThread alloc] initWithBlock:<#^(void)block#>  [thread start];  第二种创建方式:detachNewThreadSelector特点:自动启动线程,无法对线程进行更详细的设置[NSThread detachNewThreadSelector:@selector(showmsg) toTarget:self withObject:nil];第三种创建方式:performSelector方法[self performSelector:@selector(showmsg) withObject:nil];[self performSelectorOnMainThread:@selector(showmsg) withObject:nil waitUntilDone:YES];

2、设置线程属性

//设置线程的名称thread.name = @"111"//设置线程的优先级,注意线程优先级的取值范围为0.0~1.0之间,1.0表示线程的优先级最高,如果不设置该值,那么理想状态下默认为0.5thread.threadPriority = 1.0;

3、线程的状态

//线程的各种状态:新建-就绪-运行-阻塞-死亡//常用的控制线程状态的方法[NSThread exit];//退出当前线程[NSThread sleepForTimeInterval:2.0];//阻塞线程[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];//阻塞线程[NSThread isMainThread]//判断是否是主线程[_thread start];//开启线程_thread.isCancelled;//线程的状态是否是取消状态,[_thread cancel];//设置线程的状态为取消状态,cancel只能设置线程的状态,不会停止线程,退出线程需要调用,[NSThread exit]//注意:线程死了不能复生

4、线程间通讯

- (void)viewDidLoad {    [super viewDidLoad];        //开启线程下载图片    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(downLoadImage) object:nil];        [thread start];    }-(void)downLoadImage{    NSURL *url = [NSURL URLWithString:@"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png"];    NSData *data = [NSData dataWithContentsOfURL:url];    UIImage *image = [UIImage imageWithData:data];        //回到主线程刷新界面    [_imageView performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES];}

转载于:https://my.oschina.net/mexiaobai1315/blog/888325

你可能感兴趣的文章
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>