1 - (IBAction)NSThreadBtnClick:(id)sender { 2 3 [self threadObjectMethod]; 4 [self threadClassMethod]; 5 [self threadNSObjectMethod]; 6 7 8 } 9 10 #pragma mark - 继承自NSObject的类的对象 都可以调用这个方法 只不过拿不到线程对象11 - (void)threadNSObjectMethod{12 //自动开启线程并且执行方法13 //下边的这个方法在NSObject (NSThreadPerformAdditions)里边即NSObject的分类14 [self performSelectorInBackground:@selector(NSThreadDemo:) withObject:@"NSObjectCategory"];15 }16 17 #pragma mark - 通过类方法创建 分离出来一个线程 不需要手动开启线程 自动开启线程并且执行方法18 - (void)threadClassMethod{19 [NSThread detachNewThreadSelector:@selector(NSThreadDemo:) toTarget:self withObject:@"classMethodThread"];20 }21 22 23 #pragma Mark- 通过对象方法来创建线程 并且需要手动启动线程24 - (void)threadObjectMethod{25 NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(NSThreadDemo:) object:@"objectMethodThread"];26 //手动启动线程27 [thread start];28 29 30 31 }32 33 34 - (void)NSThreadDemo:(id)obj{35 NSLog(@"传入参数%@",obj);36 NSLog(@"hello %@",[NSThread currentThread]);37 38 39 }
补充部分多线程相关的读书笔记:
参考书籍:
Objective-C高级编程iOS与OSX多线程和内存管理
先写到这么多,以后再更新
如有问题,敬请指正;
如需转载,请注明出处,谢谢!