线程基础(NSThread)

作者: 追逐_chase | 来源:发表于2016-12-30 13:57 被阅读35次

    创建线程

    对于多线程的开发,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; //线程是否已结束

    相关文章

      网友评论

        本文标题:线程基础(NSThread)

        本文链接:https://www.haomeiwen.com/subject/gismvttx.html