标签:style blog class code c tar
第一、iOS主线程专门用来更新显示UI界面、处理用户触摸事件的,所以不能阻塞主线程,否则带来极坏的用户体验。
一般的解决方案就是将那些耗时的操作放到另外一个线程中去执行。
NSThread *red=[NSThread currentThread]; //获取当前线程
NSThread *mainThread=[NSThread mainThread]; //获取主线程
第二、NSThread的创建
1. - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;
参数的意义: argument:传输给target的唯一参数,也可以是nil
sample:
NSThread *thread=[[NSThread alloc] initWithTarget:self selector:@selector(timerThread) object:nil];
[thread start];
-(void)timerThread
{
NSTimer *timer=[NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(timeSchedule) userInfo:nil repeats:YES];
NSRunLoop *runLoop=[NSRunLoop currentRunLoop];
[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
}
-(void)timeSchedule
{
num++;
NSLog(@"now the number is %d",num);
}
2.隐式创建线程
[self performSelectorInBackground:@selector(timerThread) withObject:nil];
会隐式地创建一条新线程,并且在这条线程上调用self的timerThread方法
3.detachNewThreadSelector 创建线程
[NSThread detachNewThreadSelector:@selector(timerThread) toTarget:self withObject:nil];
4. 停止当前线程的执行
[NSThread exit];
5. 暂停当前线程几秒
[NSThread sleepForTimeInterval:4];
6. 在主线程上执行
[self performSelectorOnMainThread:@selector(lastResult) withObject:nil waitUntilDone:YES];
7.在指定线程上执行操作
_thread=[[NSThreadalloc] initWithTarget:selfselector:@selector(timerThread)object:nil];
[_thread start];
[selfperformSelector:@selector(lastResult)onThread:_threadwithObject:nilwaitUntilDone:YES];
线程交互sample:
http://download.csdn.net/detail/ycxmartin111111/7351381
标签:style blog class code c tar
原文地址:http://blog.csdn.net/richard_rufeng/article/details/25886483