IOS 多线程初探(一) - NSThread

来源:互联网 发布:手淘自然排名优化步骤 编辑:程序博客网 时间:2024/06/05 05:54

废话不多说,直奔主题。今天简单介绍下IOS中的三种创建线程的方法

  1. 创建NSThread对象
    NSThread *t = [[NSThread alloc] initWithTarget:self selector:@selector(functionName) object:nil];    [t start];

这是个典型的target-action方式,指定目标为self,执行动作为functionName,object为functionName的参数。调用start方法后,线程会执行functionName这个函数,此函数没有返回值。

2 创建一个类继承NSThread类,并覆盖main方法。

    @interface  MyThread : NSThread    @end    @implementation MyThread    - (void) main    {        xxxxx.....    }    @end    - (void)function    {        MyThread *t = [[MyThread alloc] init];        [t start];    }

在需要开启线程的地方创建MyThread对象,并调用start方法启动线程,便会执行到MyThread类中的main方法。

3 使用detach静态方法

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

使用detach静态方法不需要调用start方法便可直接启动线程,执行functionName方法。同样,withObject是functionName需要的参数。

介绍完线程的创建方法后,顺带介绍下线程的状态及睡眠和退出方法。

IOS中线程有三个状态,executing cancel finished。但是cancel和finished状态到底有什么用现在我还不知道,以后再来补充

  1. sleepUntilDate
    线程一直睡眠,直到某一时刻苏醒,执行动作。

  2. sleepForTimeInterval
    使线程睡眠多少秒,类似于linux中的sleep函数。

  3. exit
    [NSThread exit];
    退出线程。类似于linux中的exit函数。

  4. cancel
    NSThread *t;
    [t cancel];
    设置线程状态为取消状态。具体什么作用不详。。。有待研究。

1 0
原创粉丝点击