用NSThread创建子线程的3种方法
// DYFViewController.m // 623-02-pthread // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" #import <pthread.h> @interface DYFViewController () @end @implementation DYFViewController //// c语言函数 //void *run(void *data) //{ // // 1.获取当前的线程 // NSThread *cThread = [NSThread currentThread]; // // // 2.打印线程 // NSLog(@"%@", cThread); // // // 3.h耗时操作 // for (int i = 0; i < 9999; i++) { // NSLog(@"%@", cThread); // } // // return NULL; //} - (IBAction)btnOnClick { // 1.获取当前的线程 NSThread *cthread = [NSThread currentThread]; NSThread *mt = [NSThread mainThread]; // 2.打印线程 NSLog(@"%@", cthread); NSLog(@"%@", mt); // 3.执行一线耗时的操作 : 创建一套子线程 [self threadCreate3]; } - (void)run:(NSString *)parma { // [NSThread threadPriority]; // // [NSThread setThreadPriority:0.55]; // 取值0-1,默认0.5 for (int i = 0; i < 9999; i++) { NSLog(@"%@---------%@", [NSThread currentThread], parma); } } - (void)threadCreate5 { // 分离出的子线程 [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"]; } - (void)threadCreate4 { // 分离出的子线程 [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"]; } /** * NSThread创建方式3:隐世线程创建,并且直接(自动)启动 */ - (void)threadCreate3 { [self performSelectorInBackground:@selector(run:) withObject:@"333333"]; } /** * 创建方式2:创建完线程后自动启动 */ - (void)threadCreate2 { // 分离出的子线程 [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"]; } /** * 创建方式1:①先创建初始化子线程②再启动 */ - (void)threadCreate { NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"]; thread1.name = @"thread1"; // 开启线程 [thread1 start]; NSThread *thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"]; thread2.name = @"thread2"; // 开启线程 [thread2 start]; NSThread *thread3 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"]; thread3.name = @"33"; // 开启线程 [thread3 start]; } @end
利用NSThread在开发中也不常用,了解即可