美文网首页ios学习iOS学习笔记
NSThread创建及简单使用

NSThread创建及简单使用

作者: 学长的日常 | 来源:发表于2016-08-03 21:31 被阅读45次

    创建方法

        //方法一
        NSThread *thread1 = [[NSThread alloc]initWithTarget:self selector:@selector(threadAction) object:nil];
        //启动线程
        [thread1 start];
        
       // 注意:object:后面跟的是自定义方法有参数时接受的参数,以下方法都是一样
        
    
    
        //方法二 没有返回值,不需要调用start方法
        [NSThread detachNewThreadSelector:@selector(threadAction) toTarget:self withObject:nil];
    
    
        
        //方法三
        [self performSelectorInBackground:@selector(threadAction) withObject:nil];
    
    
        
        //方法四 自定义线程
        CustomThread *customThread = [[CustomThread alloc]init];
        //启动方法调用main方法的话,就相当于调用了一个普通方法,还是在主线程中
        // [self main];//这种调用是错误的
        //启动线程,新的线程会执行相应线程生成的main方法,并且会开辟一个新的线程
        [customThread start];
    }
    
     //自定义类.m 文件内容
     #import "CustomThread.h"
    
    @implementation CustomThread
    
    - (void)main{
        
        NSLog(@"threadPriority的优先级:%lf",[NSThread threadPriority]);
        
        NSLog(@"threadCallMethod是否是主线程:%d",[[NSThread currentThread] isMainThread]);
    }
    
    @end
    

    退出线程

        
        //1线程的推出(只能退出还没有执行的线程)
        [NSThread exit];
    
    
        
        
        //指定某个线程退出
        //(1)先标记thread1状态是cancel
        [self performSelector:@selector(cancelThread1:) withObject:thread1 afterDelay:1];
    
    
        //给线程绑定状态的方法
        - (void)cancelThread1:(NSThread *)thread{
        
        [thread cancel];
    }
    
    
    
    //线程实现的方法
    - (void)threadAction{
        
        //(2)延迟2秒,判断当前线程是否被取消的状态
        [NSThread sleepForTimeInterval:2];
        if ([[NSThread currentThread]isCancelled]) {
            //如果是,退出线程
            [NSThread exit];
        }
        
        
        NSLog(@"-----优先级:%lf",[NSThread threadPriority]);
        NSLog(@"------是否是主线程:%d",[[NSThread currentThread]isMainThread]);
        
    }
    
    

    相关文章

      网友评论

        本文标题:NSThread创建及简单使用

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