线程基础(NSThread)
2016-12-30 本文已影响35人
追逐_chase
创建线程
对于多线程的开发,iOS系统提供了多种不同的接口,先谈谈iOS多线程最基础方面的使用。产生线程的方式姑且分两类,一类是显式调用,另一类是隐式调用。
-初始化主线程的方法
//类方法
[NSThread detachNewThreadSelector:@selector(方法) toTarget:self withObject:@"对象"];
//实例可以拿到线程对象,方便以后终止线程
NSThread *thread = [[XMGThread alloc] initWithTarget:self selector:@selector(run:) object:@"jack"];
-隐式调用---线程之间的通信
一般是通过NSObject的Category方法调用,方法如下:
//在主线程中运行方法,wait表示是否阻塞这个方法的调用,如果为YES则等待主线程中运行方法结束。一般可用于在子线程中调用UI方法
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
//在指定线程中执行,但该线程必须具备run loop。
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
//隐含产生新线程。
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
-NSThread方法中一些常用的方法
- +(NSThread *)currentThread; //获得当前线程
- +(void)sleepForTimeInterval:(NSTimeInterval)ti; //线程休眠
- +(NSThread *)mainThread; //主线程,亦即UI线程了
- -(BOOL)isMainThread; +(BOOL)isMainThread; //当前线程是否主线程
- -(BOOL)isExecuting; //线程是否正在运行
- -(BOOL)isFinished; //线程是否已结束