关于多线程在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.通知 (三种通知消息)
***********************************************************************/