- (IBAction)NSThreadBtnClick:(id)sender { [self threadObjectMethod];
[self threadClassMethod];
[self threadNSObjectMethod]; } #pragma mark - 继承自NSObject的类的对象 都可以调用这个方法 只不过拿不到线程对象
- (void)threadNSObjectMethod{
//自动开启线程并且执行方法
//下边的这个方法在NSObject (NSThreadPerformAdditions)里边即NSObject的分类
[self performSelectorInBackground:@selector(NSThreadDemo:) withObject:@"NSObjectCategory"];
} #pragma mark - 通过类方法创建 分离出来一个线程 不需要手动开启线程 自动开启线程并且执行方法
- (void)threadClassMethod{
[NSThread detachNewThreadSelector:@selector(NSThreadDemo:) toTarget:self withObject:@"classMethodThread"];
} #pragma Mark- 通过对象方法来创建线程 并且需要手动启动线程
- (void)threadObjectMethod{
NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(NSThreadDemo:) object:@"objectMethodThread"];
//手动启动线程
[thread start]; } - (void)NSThreadDemo:(id)obj{
NSLog(@"传入参数%@",obj);
NSLog(@"hello %@",[NSThread currentThread]); }
补充部分多线程相关的读书笔记:
参考书籍:
Objective-C高级编程iOS与OSX多线程和内存管理
先写到这么多,以后再更新
如有问题,敬请指正;
如需转载,请注明出处,谢谢!