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);//线程休眠 }}