首页 > 代码库 > iOS之多线程1-NSThread简介

iOS之多线程1-NSThread简介

关于多线程在iOS中的重要性,就不废话了.就一个字:重要 ! ^_^

iOS中常用的三种多线程方式:NSThread , GCD, NSOpertaion

虽然NSThrea排在第一位(几乎所有的介绍多线程的书籍都是这么排序),但用的最少,原因:没有后面的两个小弟用起来体贴.

作为多线程的大哥,NSThread几乎已经躲到幕后了.

NSThread是从Mac OS 系统引入到iOS中的,在Mac OS 10.5之前,NSThread的启用方法只有一个: detachNewThreadSelector:toTarget:withObject:

在10.5之后,苹果又添加了一个看起了更加简约的启用方式:start

并且在10.5之后,继承NSThread的子类,可以重写main方法(线程的一个入口方法)后,不用再调用super的main方法;

关于NSThrea的学习归纳大纲:

1. 初始化

  - (id)init  

              // 这个方法设计的目的,就是用来初始化一个实例,

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

         // target: 用来接收消息selector的对象 (换句话就是调用target的select方法);

    // selector:发送给target的消息,(target的selector方法),这个消息只能有一个参数,并且不能有返回值;

    // argument :传递给target的一个对象,可以是nil;

垃圾回收机制一直是苹果开发的一个问题,做了很久的iOS也会有人认为OC是没有垃圾回收,其实这个说法不完全正确;严格的说,在iOS下的OC是没有垃圾回收的,在Mac下,OC是有垃圾回收机制的;

在没有垃圾回收机制的情况下,selector方法会维护一个自动释放池,并将Target和argument放进自动释放池中,当线程退出的时候,会release掉这个自动释放池;

在有垃圾回收机制的情况下,不会产生这个自动释放池;

/*****************************后续预告******************************

2. 使用 (启动进程 / 停止进程 / ...)  

3.状态查询处理 ( 是否主主线程 / 是否多线程 / 设置优先级 / ...)

4.通知 (三种通知消息)

***********************************************************************/