GCD源码分析6 —— dispatch_source篇 发表于 2018-02-10 | 分类于 iOS 字数统计: 4,882 | 阅读时长 ≈ 25 前言相比较而言,GCD中最不引人注目的就是dispatch_source了,它是BSD系统内核惯有功能kqueue的包装,可以一个监视某些类型事件的发生。当这些事件发生时,它自动将一个block放入dispatch queue的执行例程中。如果您对IO多路复用有一定的了解,那么就很容易能理解disp ... 阅读全文 »
GCD源码分析5 —— dispatch_semaphore篇 发表于 2018-02-08 | 分类于 iOS 字数统计: 1,307 | 阅读时长 ≈ 6 前言这篇文章主要分析dispatch_semaphore_t的底层实现 GCD信号量dispatch_semaphore_tdispatch_semaphore_s是性能稍次于自旋锁的的信号量对象,用来保证资源使用的安全性。 1234567891011121314151617DISPATCH_DEC ... 阅读全文 »
GCD源码分析4 —— dispatch_group篇 发表于 2018-02-06 | 分类于 iOS 字数统计: 1,627 | 阅读时长 ≈ 8 前言这篇文章主要分析一下dispatch_group的底层实现,主要是包括几个重要的函数: dispatch_group_create dispatch_group_enter dispatch_group_leave dispatch_group_wait dispatch_group_noti ... 阅读全文 »
GCD源码分析3 —— dispatch_queue篇 发表于 2018-02-03 | 分类于 iOS 字数统计: 6,061 | 阅读时长 ≈ 28 前言GCD的队列是GCD源码分析系列中的重点 队列的定义dispatch_queue_s是一个结构体,定义如下:12345struct dispatch_queue_s { DISPATCH_STRUCT_HEADER(dispatch_queue_s, dispatch_queue ... 阅读全文 »
GCD源码分析2 —— dispatch_once篇 发表于 2018-02-01 | 分类于 iOS 字数统计: 1,510 | 阅读时长 ≈ 6 前言这篇文章主要分析一下dispatch_once的底层实现,相对而言,这应该是GCD源码分析系列中最简单的一篇了。 dispatch_once分析在iOS开发中,我们经常使用dispatch_once去定义一个单例,来保证对象的唯一性,不过我们是否去了解过dispatch_once是如何在多线程情 ... 阅读全文 »
GCD源码分析1 —— 开篇 发表于 2018-01-31 | 分类于 iOS 字数统计: 3,090 | 阅读时长 ≈ 13 前言在iOS的日常编码中,GCD很好地隔离了我们与线程(pthread)之间的直接交流,跟我们打交道的只有队列和Block,时间久了甚至感觉不到线程的存在。一直想找机会好好研究一下GCD底层,领略下其博大精深之要义.经过初期调研发现:GCD源码分析资料稀少,且比较零散,很难全面地对GCD进行了解,原 ... 阅读全文 »
iOS启动优化 发表于 2018-01-30 | 分类于 iOS 字数统计: 4,748 | 阅读时长 ≈ 18 前言随着互联网的高速发展,用户对手机应用的要求越来越高,应用启动时间作为一项重要的参考指标,直接影响着用户的使用体验。QQ阅读App的启动流程包含了大量的业务模块,并且涉及了很多第三方库的初始化,这势必会增加应用的启动时间,因此非常有必要对App的启动进行优化。 Mach-O文件在优化之前,先来了解 ... 阅读全文 »
iPhoneX适配之Home-Indicator 发表于 2018-01-28 | 分类于 iOS 字数统计: 2,082 | 阅读时长 ≈ 8 前言苹果一向特立独行,iPhoneX的横空出世更是令人咋舌,果粉自然惊喜,然而因为其刘海,iOS工程师却不得不进行苦逼的适配。关于iPhoneX的适配,网上自然非常之多,里面不乏优秀杰作。虽然也曾经独自承担了QQ阅读的iPhoneX适配工作,但是好多问题的解决之道都是相同的,本文不会再重复喋喋不休这 ... 阅读全文 »
JSPatch VS Aspects 发表于 2018-01-24 | 分类于 iOS 字数统计: 5,309 | 阅读时长 ≈ 24 前言有很多iOS开源项目通过hook第三层转发forwardInvocation,去实现各种各样的黑魔法。如果一个项目工程同时接入了多个这样的库,那么在享受这些库给我们带来便利的同时,也有可能会遭受这些库带来的各种各样的坑。 iOS的消息转发机制iOS的消息转发机制已经被讲的烂大街了,这里不再赘述, ... 阅读全文 »
JSPatch的dealloc忧伤 发表于 2018-01-21 | 分类于 iOS 字数统计: 3,311 | 阅读时长 ≈ 15 前言JSPatch作为一个轻量级的热修复方案曾经解决了很多App的热修复痛点,甚至一度风靡,大有席卷热修复领域之势,然而因为触犯了苹果爸爸的龙颜而被封杀,导致很多企业投鼠忌器,不敢再冒天下之大不韪去明修栈道暗度陈仓。虽说JSPatch的结局令人惋惜,但是作为一个iOS开发工程师,里面仍然有很多精髓思 ... 阅读全文 »