- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self createThread1];
}
//第一种方法
-(void)createThread1{
//创建线程
//target :selector消息发送的对象
//selector:线程执行的方法,这个selector最多只能接收一个参数
//object : 传给selector的唯一参数,也可以是nil
NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"jack"];
//启动线程
[thread start];
}
//创建线程第二种方法
- (void)createThread2{
// 不能获得当前的线程
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:"rose"];
}
//第三种方法
- (void)createThread3{
[self performSelectorInBackground:@selector(run:) withObject:nil];
}
- (void)run:(NSString *)param{
for(NSInteger i = 0; i < 100000;i++){
NSLog(@"run------%@------%@",param,[NSThread currentThread].name);
}
}
//下面两种线程的优点:简单快捷 缺点是:无法对线程进行更详细的设置
//创建线程后自动启动线程
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
//隐式创建并启动线程
[self performSelectorInBackground:@selector(run) withObject:nil]