美文网首页
iOS NSThread解析

iOS NSThread解析

作者: liang1030 | 来源:发表于2021-09-01 16:39 被阅读0次

    一,NSThread简介

    NSThread是苹果官方提供面向对象操作线程的技术,简单方便,可以直接操作线程对象。

    优点:轻量级,使用简单。可以取消(cancel)、退出(exit)当前线程。

    缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销。

    二,NSThread使用

    1,实例初始化

    - (instancetype)init;
    - (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(nullable id)argument;
    - (instancetype)initWithBlock:(void (^)(void))block;
    
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMethod:) object:@"param"];
    [thread start];
        
    NSThread *thread1 = [[NSThread alloc] initWithBlock:^{
        NSLog(@"----thread1:%@---",[NSThread currentThread]);
    }];
    [thread1 start];
    
    - (void)threadMethod:(id)param {
        NSLog(@"%@",param);
        NSLog(@"----thread:%@---",[NSThread currentThread]);
    }
    

    注:通过以上实例初始化的线程需要调用start方法启动线程。

    2,类方法

    + (void)detachNewThreadWithBlock:(void (^)(void))block;
    + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(nullable id)argument;
    
    [NSThread detachNewThreadWithBlock:^{
        NSLog(@"----detachNewThreadWithBlock:%@---",[NSThread currentThread]);
    }];
        
    [NSThread detachNewThreadSelector:@selector(threadMethod:) toTarget:self withObject:@"param1"];
    

    注:通过以上类方法创建的线程默认就已经开启了。

    2,类属性

    //获取当前线程
    @property (class, readonly, strong) NSThread *currentThread;
    
    NSThread.currentThread
    [NSThread currentThread];
    

    相关文章

      网友评论

          本文标题:iOS NSThread解析

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