博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 多线程4种使用方法 :pThread,NSThread,GCD和NSOperation
阅读量:5939 次
发布时间:2019-06-19

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

hot3.png

 pThread  使用方法

#import "ViewController.h"#import 
//pThread需要导入@interface ViewController ()
@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; UIButton *but1 = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 30)]; [but1 setTitle:@"pThread" forState:UIControlStateNormal]; [but1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [but1 addTarget:self action:@selector(pThreadClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:but1];}#pragma mark pThread是基于C语言的线程 OC里面不常用- (void)pThreadClick{ NSLog(@"这是主线程"); pthread_t pthread; //创建一个线程 pthread_create(&pthread, NULL, run, NULL); //run 是要执行的方法按照C语言来写}void *run(void *dadta){ NSLog(@"这是子线程"); for (int i = 0; i< 10; i++) { NSLog(@"%d",i); sleep(1);//线程休眠 } return NULL;}

NSThread 的使用

#import "ViewController.h"@interface ViewController ()
@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; UIButton *but1 = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 30)]; [but1 setTitle:@"NSThread" forState:UIControlStateNormal]; [but1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [but1 addTarget:self action:@selector(NSThreadClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:but1];}#pragma mark NSThread 完全面向对象- (void)NSThreadClick{ NSLog(@"这是主线程"); //第一种方法 NSThread *thread1 = [[NSThread alloc]initWithBlock:^{ NSLog(@"这是子线程"); for (int i = 0; i< 10; i++) { NSLog(@"%d",i); sleep(1);//线程休眠 } }]; [thread1 setName:@"thread1"]; [thread1 setThreadPriority:.7];//设置线程优先级 0-1 [thread1 start]; NSThread *thread2 = [[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil]; [thread2 setThreadPriority:.4];//设置线程优先级 0-1 [thread2 setName:@"thread2"];//设置线程名字 [thread2 start]; //第二种方法 通过detachNewThreadSelector 静态方法// [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; //第三种方法 通过Object下的 performSelectorInBackground 方法创建// [self performSelectorInBackground:@selector(run) withObject:nil];}- (void)run{ NSLog(@"这是子线程:%@",[NSThread currentThread].name); for (int i = 0; i< 10; i++) { NSLog(@"%d",i); sleep(1);//线程休眠 }}

 

转载于:https://my.oschina.net/u/2287505/blog/1632333

你可能感兴趣的文章
如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)
查看>>
使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失
查看>>
ViewBag对象的更改
查看>>
算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
查看>>
apache安装mod_ssl.so 出现 undefined symbol: ssl_cmd_SSLPassPhraseDialog错误解决
查看>>
new Function()
查看>>
Vector & ArrayList Hashtable & HashMap ArrayList & LinkedList
查看>>
Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
查看>>
Mysql 监视工具
查看>>
hdu1025 Constructing Roads In JGShining&#39;s Kingdom(二分+dp)
查看>>
Android PullToRefreshListView和ViewPager的结合使用
查看>>
禅修笔记——硅谷最受欢迎的情商课
查看>>
struts2入门(搭建环境、配置、示例)
查看>>
Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
查看>>
linux top命令查看内存及多核CPU的使用讲述【转】
查看>>
Linux下golang开发环境搭建
查看>>
jQuery操作input
查看>>
layer弹出信息框API
查看>>
delete from inner join
查看>>
WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...
查看>>