文档章节

NSThread基本用法

xiaobai1315
 xiaobai1315
发布于 2017/04/27 14:04
字数 417
阅读 6
收藏 0

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.5
thread.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];
}

© 著作权归作者所有

共有 人打赏支持
xiaobai1315
粉丝 3
博文 197
码字总数 80276
作品 0
程序员
iOS多线程全面解读(三):NSOperation

写在前面 本系列文章列表 概述、NSThread GCD NSOperation 锁 NSOperation是基于GCD的面向对象封装,在各大开源库里面我们常常看到它的身影。它的使用很简单易懂,基本上你点进Api就会用了,...

indulge_in
2017/11/30
0
0
iOS NSThread、NSOperation与GCD

一、NSThread线程 优点: NSThread 比其他两个轻量级、使用方便、简洁。 缺点: ①需要自己管理线程的生命周期。 ②线程同步,线程同步对数据的加锁会有一定的系统开销 NSThread线程的使用:...

IamOkay
01/15
1
0
iOS 多线程—GCD 基本用法

什么是进程? 最通俗的描述就是一个个pid,官方的说法:进程是程序在计算机上的一次执行活动。打开一个app 就开启了一个进程。可包含多个线程。 什么是线程? 独立执行的代码段,一个线程同一...

Carson6931
2015/10/23
2.1K
12
ios多线程之NSThread

ios多线程之NSThread 什么是线程: 一个进程想要执行任务,必须至少得有一个线程,但是只拥有一个主线程,线程是进程的基本执行单位,一个进程的所有任务必须在线程中执行。 线程的分类: 串...

zhenghaoLi
2016/09/03
9
0
传智播客学习笔记 网络多线程

主线程处理UI,避免耗时操作 iOS多线程技术有4种 pthread,通用技术,跨平台 c语言,程序员管理生命周期,几乎不用 NSThread 面向对象,可以直接操作线程 OC语言 程序员 管理生命周期,偶尔使...

云飞扬v5
2015/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
26分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
29分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
34分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
43分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部