美文网首页
iOS多线程之NSThread

iOS多线程之NSThread

作者: 践行者_Leng | 来源:发表于2019-08-19 16:07 被阅读0次

    NSThread简介

    NSThread是苹果官方提供面向对象操作线程的技术,简单方便,可以直接操作线程对象,不过需要自己控制线程的生命周期。在平时使用很少,最常用到的无非就是 [NSThread currentThread] 获取当前线程。

    NSThread 的使用

    1. 先创建,再启动线程(子线程)
    -(void)startThreadAction{
        NSThread *thread = [[NSThread  alloc]initWithTarget:self selector:@selector(threadAction) object:nil];
        [thread start];  // 启动线程
    }
    -(void)threadAction{
        NSLog(@"当前线程是: %@",[NSThread currentThread]);
    }
    
    1. 创建后自动启动线程(子线程)
    1.第一种
    -(void)startThreadAction{
        [NSThread detachNewThreadSelector:@selector(threadAction) toTarget:self withObject:nil];
    }
    -(void)threadAction{
        NSLog(@"当前线程是: %@",[NSThread currentThread]);  // 获取当前线程
    }
    
    2.第二种(该方法至少iOS10.0系统)
     -(void)startThreadAction{
        [NSThread detachNewThreadWithBlock:^{
            NSLog(@"当前线程是: %@",[NSThread currentThread]);  // 获取当前线程
        }];
    }
    
    1. 隐式创建并自动启动线程(子线程)
    -(void)startThreadAction{
        [self performSelectorInBackground:@selector(threadAction) withObject:nil];
    }
    -(void)threadAction{
        NSLog(@"当前线程是: %@",[NSThread currentThread]);  // 获取当前线程
    }
    
    1. NSThead 其他相关用法
    // 获得主线程
    + (NSThread *)mainThread;
    
    // 获得当前线程
    NSThread *current = [NSThread currentThread];
      
    // 判断是否为主线程(类方法)
    + (BOOL)isMainThread;  
    
    // 判断是否为主线程(对象方法)
    - (BOOL)isMainThread;
    
    // 开始线程
    - (void)start;
    
    // 退出线程
    + (void)exit;
    
    // 阻塞线程
    + (void)sleepUntilDate:(NSDate *)date;
    + (void)sleepForTimeInterval:(NSTimeInterval)ti;
    

    相关文章

      网友评论

          本文标题:iOS多线程之NSThread

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