<span style="font-size:18px;">零、线程的注意点(掌握)
1.不要同时开太多的线程(1~3条线程即可,不要超过5条)
2.线程概念
1> 主线程 : UI线程,显示、刷新UI界面,处理UI控件的事件
2> 子线程 : 后台线程,异步线程
3.不要把耗时的操作放在主线程,要放在子线程中执行
一、NSThread(掌握)
1.创建和启动线程的3种方式
1> 先创建,后启动
// 创建
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:nil];
// 启动
[thread start];
2> 创建完自动启动
[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:nil];
3> 隐式创建(自动启动)
[self performSelectorInBackground:@selector(download:) withObject:nil];
2.常见方法
1> 获得当前线程
+ (NSThread *)currentThread;
2> 获得主线程
+ (NSThread *)mainThread;
3> 睡眠(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
4> 设置线程的名字
- (void)setName:(NSString *)n;
- (NSString *)name;
二、线程同步(掌握)
1.实质:为了防止多个线程抢夺同一个资源造成的数据安全问题
2.实现:给代码加一个互斥锁(同步锁)
@synchronized(self) {
// 被锁住的代码
}
三、GCD
1.队列和任务
1> 任务 :需要执行什么操作
* 用block来封装任务
2> 队列 :存放任务
* 全局的并发队列 : 可以让任务并发执行
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
* 自己创建的串行队列 : 让任务一个接着一个执行
dispatch_queue_t queue = dispatch_queue_create("cn.heima.queue", NULL);
* 主队列 : 让任务在主线程执行
dispatch_queu
OC多线程知识点总结
最新推荐文章于 2020-10-30 11:32:51 发布
本文详细总结了Objective-C(OC)中的多线程知识,包括线程的基本概念、NSThread的创建与管理、线程同步、GCD的队列与任务、线程间通信、单例模式实现以及如何从其他线程回到主线程。还介绍了NSOperation和NSOperationQueue的使用,以及第三方库SDWebImage的图片下载管理。最后讨论了使用第三方框架的注意事项和面试相关问题。
摘要由CSDN通过智能技术生成