zoukankan      html  css  js  c++  java
  • 多线程的四种创建方式--前两种不常用

    - (void)viewDidLoad {

        [super viewDidLoad];

        //1.Datach 方式,隐式创建

    //    [NSThread detachNewThreadSelector:@selector(detachMethod) toTarget:self withObject:nil];

        //2.NSObject的perform方法,隐式创建

    //    [self performSelectorInBackground:@selector(detachMethod) withObject:nil];

        //3.显示创建

    //    NSThread *thread =[[NSThread alloc]initWithTarget:self selector:@selector(detachMethod) object:nil];

        //给线程name赋值

    //    thread.name =@"thread_name";

        //在线程创建之前设置栈空间才有效

    //    thread.stackSize =100;

         //线程全局数据 readOnly

    //    [thread.threadDictionary setObject:@"value1" forKey:@"key1"];

        //开启线程

    //    [thread start];

        方法4需要子类化一个子类

        - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument{

        

            if (self =[super initWithTarget:target selector:selector object:argument]) {

              _target =target;

              _sel =selector;

            

            }

            return self;

          }

    - (void)main{

        if (_target) {

            //父类的main方法中,_target 会掉用_sel

            [_target performSelector:_sel withObject:nil];

        }

    }

        //4.子类NSThread ,重写main方法

        Thread *thread1 =[[Thread alloc]initWithTarget:self selector:@selector(detachMethod) object:nil];

        

        [thread1 start];

    }

    - (void)detachMethod{

        //是否是主线程

        NSLog(@"%d",[NSThread isMainThread]);

        //获取当前线程,打印name

        NSLog(@"%@",[[NSThread currentThread]name]);

    }

  • 相关阅读:
    linux学习之路7 linux下获取帮助
    51nod 1002 数塔取数问题
    51nod 1002 数塔取数问题
    51nod 1001 数组中和等于K的数对
    51nod 1001 数组中和等于K的数对
    linux学习之路6 Vi文本编辑器
    linux学习之路6 Vi文本编辑器
    计算误差——ACM计算几何中的精度问题
    计算误差——ACM计算几何中的精度问题
    daily_journal_3 the game of thrones
  • 原文地址:https://www.cnblogs.com/yxt9322yxt/p/4805623.html
Copyright © 2011-2022 走看看