码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 多线程学习笔记

时间:2014-10-21 11:52:42      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   使用   for   

本文复制、参考自文章:iOS多线程编程之NSThread的使用  ,主要为了加强个人对知识的理解和记忆,不做他用。这里对原作者的辛勤工作表示感谢!

1. 简介

1.1 iOS的多线程编程技术分类

(1)NSThread 

  (2) Cocoa NSOperation

  (3) GCD (Grand Central Dispatch)

这三种方式从上到下,抽象层次逐渐增高,使用也越来越简单。

1.2 三种方式的优缺点

  优点   缺点
NSThread 轻量 需要自己管理线程的生命周期,线程同步。线程同步加锁时,会有一定的系统开销。
NSOperation   无需关心线程管理,数据同步,可以把精力放在自己需要的执行操作上  
GCD iOS4.0后出现,以替代NSThread,NSOperation等技术的,很高效、强大  

 

 

 

 

 

 

2. NSThread的使用

2.1 创建方式

(1) 实例方法创建

- (id) initWithTarget:(id)target selector:(SEL)selector object:(id) argument
示例: NSThread
* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil]; [myThread start];

  (2) NSThread 类方法创建

+ (void)detachNewThreadSelector:(SEL) aSelector toTarget:(id)aTarget withObject:(id)anArgument

示例:
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];

(3)NSObject 非显示方法创建

+ (void) performSelectorInBackground:(SEL)aSelector withObject:(id)anArgument
示例
[Obj performSelectorInBackground:@selector(doSomething:)withObject:nil];

selector: 线程执行的方法,这个selector只能有一个参数,而且不能有返回值;

target:    selector消息发送的对象

argument:传输给selector的唯一参数,也可以是nil

第一种方式会直接创建线程并且开始运行线程,第二种方法是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息。

 

iOS 多线程学习笔记

标签:style   blog   http   color   io   os   ar   使用   for   

原文地址:http://www.cnblogs.com/wenshanzh/p/4039872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!