background image

[NSThread sleepForTimeInterval:1.0f];
提示:
–performSelectorInBackground 方法本身是在主线程中执行的,而选择器指定的方法是

在后台线程中进行的

–尽管使用 performSelectorInBackground 方法调用的任务可以更新 UI 界面,但是在实

际开发中,涉及到

UI 界面的更新操作,还是要使用 performSelectorOnMainThread 方法,以

避免不必要的麻烦

注:
•内存管理对于多线程非常重要
•Objective-C 可以凭借@autoreleasepool 使用内存资源,并需要时回收资源
•每个线程都需要有@autoreleasepool,否则可能会出现内存泄漏
 
2.NSThread
 
•创建线程方法:
1.+ 

(void)detachNewThreadSelector:(SEL)selector 

toTarget:(id)target 

withObject:

(id)argument;

2.- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;
•参数说明:
–selector:线程执行的方法,只能有一个参数,不能有返回值
–target:selector 消息发送的对象
–argument:传输给 target 的唯一参数,也可以是 nil
 
3.NSOperation/NSOperationQueue
 
•NSOperation 的两个子类
1.NSInvocationOperation
2.NSBlockOperation
 
•工作原理:
1.用 NSOperation 封装要执行的操作
2.将创建好的 NSOperation 对象放 NSOperationQueue 中
3.启动 OperationQueue 开始新的线程执行队列中的操作
•注意事项:
1.使用多线程时通常需要控制线程的并发数,因为线程会消耗系统资源,同时运行的

线程过多,系统会变慢

2.使用以下方法可以控制并发的线程数量:
-(void)setMaxConcurrentOperationCount:(NSInteger)cnt;
3.使用 addDependency 可以建立操作之间的依赖关系,设定操作的执行顺序

 
上面的程序设置依赖关系后,只有等操作

a 和 b 都执行完,才会执行 c.

 
4.GCD