iOS 多线程 (一)

来源:互联网 发布:潘粤明 董洁 知乎 编辑:程序博客网 时间:2024/05/21 06:13

女程序员的第一篇博客  从事开发半年

iOS大致提供了如下三种多线程编程技术

1.使用NSThread实现多线程
2.使用NSOperation与NSOperationQueue实现多线程
3.使用GCD(Grand Central Dispatch)实现多线程

这三种编程方式从上到下,抽象层次从低到高,抽象度越高用法越简单

我们先来看看第一种~NSThread:
第一步:创建NSThread对象
两种方式~

1.NSThread *first = [[NSThread alloc]initWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#>];

2.NSThread *second = [NSThread detachNewThreadSelector:<#(SEL)#> toTarget:<#(id)#> withObject:<#(id)#>];

其中selector最多可以接受一个参数 Target对象的selector方法的方法代表了线程需要完成的任务,因此相当于吧target对象的selector方法转换为线程的执行体
第一种方法返回一个NSThread对象 必须调用start方法启动线程 第二种会直接创建并启动线程
当iOS应用运行后,至少会创建一个主线程,也叫UI线程。
+currentThread: 是NSThread类的类方法 返回当前正在执行的线程对象 除此之外程序可以通过setName方法为线程设置名字,也可以通过name方法返回指定线程的名字。
启动线程使用start方法,线程启动后并不是立即进入运行状态,线程被启动后进入就绪状态,当系统调度线程后,线程才会进入运行状态。如果希望调用子线程的start方法后立即开始执行线程,可以使用[NSTread sleepFprTimeInterval:0.001].
终止子线程
线程会在以下3种方式之一结束,结束就处于死亡状态
1.线程执行体方法执行完成,线程正常结束
2.线程执行过程中出现错误
3.直接调用NSTread类的exit方法来终止当前正在执行的线程

未完待续


0 0
原创粉丝点击