感觉用了几年的GCD,也就用了这几点,先捋捋吧
1.最常见的 获取主线程、延迟执行、开辟子线程
// 获取主线程,必不能用同步,会死锁😅
dispatch_async(dispatch_get_main_queue(), ^{
});
// 需要注意的一种场景,VC中执行完一下代码,不到5秒就disappear了的话、、、
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 五秒后执行的代码块
});
// long identifier:告诉队列执行任务的服务质量
// unsigned long flags:为了未来使用保留的!设0即可
dispatch_queue_t q = dispatch_get_global_queue(long identifier, unsigned long flags)
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// 在子线程要执行的代码
});
这部分基础应用,简单来说处理好循环引用和避免滥用子线程就可以了。
关于循环引用,肯定说弱引用修饰下;但是有时候不仅仅弱引用就够了的,反而会在一定情况下造成崩溃。比如:
待续ing🤣😄
网友评论