首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Hello_Kid
掘友等级
iOS
|
不知名
越努力,越幸运
获得徽章 6
动态
文章
专栏
沸点
收藏集
关注
赞
18
文章 17
沸点 1
赞
18
返回
|
搜索文章
最新
热门
手撕iOS底层26 -- 我理解的KVO
1. 什么是KVO? KVO本质2. KVO的基本使用 3KVO原理 4KVO调用顺序 5KVO内部细节
手撕iOS底层20 -- 类的加载【中卷】
ro表示read only的意思, 即只读, 包含名称, 方法, 协议以及实例变量信息, 因为是只读的,所以也就是WWDC说的clean memory,而clean memory在加载到内存后是不会发生改变的。 rw表示read write,就是可读可写, 由于runtime的…
手撕iOS底层34 -- Block底层原理
正常释放 : 在对象A持有对象B的时时候,对象A释放会调用dealloc方法,然后会给对象B发送release信号, 对象B收到信号后,如果此时对象B的引用计数为0, 就会调用对象B自己的dealloc方法,释放自己。 循环引用: 对象A和对象B互相持有, 所以导致对象A释放不…
手撕iOS底层31 -- GCD之NSThread & GCD & NSOperation进阶使用
队列组可以将很多队列添加到一个组里,这样做的好处是,当这个组里所有的任务都执行完了,队列组会通过一个方法通知我们。 dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后…
手撕iOS底层30 -- GCD之函数与队列
纯c语言编写, 提供非常强大的函数,也就是说用难以置信的非常简洁的记述方法,实现极为复杂繁琐的多线程编程,可以说是一项划时代的技术。 总结就是 任务 + 队列 + 函数构成。 开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中。 主队列 , Main …
手撕iOS底层19 -- 类的加载【上卷】
代码是通过编译成Mach-O可执行文件,读取到Mach-O可执行文件后,再从Mach-O把类信息读取到内存中。 map_images是 引用类型,外界变了,跟着变。 我们的主角登场了, _read_images 和 lookupImpOrForward 可以说是我们学习 Run…
手撕iOS底层18 -- 类加载之初探--dyld与libObjc那些事
DYLD_PRINT_STATISTICS:设置DYLD_PRINT_STATISTICS为YES,会打印App在main函数前的加载时长,包括整体加载时长和动态库的时长,通过这个环境可以查看耗时,对其耗时分析进行优化。 当程序有Crash发生时, 程序中的Crash是指违背了…
手撕iOS底层17 -- 应用程序加载流程(完善更新)
通过运行结果查看:执行顺序为:load、kcFunc、main,即 先执行load方法,再执行被__attribute((constructor))修饰的c/c++方法,最后执行main函数。 在项目编译时,会把项目中编写的源文件编译成一个一个对应的.o的目标文件,最后打包成M…
手撕iOS底层16 -- 消息解析&消息转发原理
搜索__objc_forward_handler,根据之前总结的规则, 去掉一个下划线来搜索。 实际的本质都是调用objc_defaultForwardHandler,这就是我们日常中经常见到的崩溃错误。 通过注释也可以得知, 这个实在IMP没有找到的时候,会走这里解决,并且只…
手撕iOS底层15 -- 方法慢速的查找
TailCallFunctionPointer 也只是通过br指令执行传进来的参数IMP。 到这里就汇编部分就执行完了, 今天我们主要深入探索_lookUpImpOrForward 。 根据条件是否执行realizeClassMaybeSwiftAndLeaveLocked 和…
下一页
个人成就
文章被点赞
99
文章被阅读
27,352
掘力值
1,070
关注了
46
关注者
239
收藏集
13
关注标签
26
加入于
2016-08-18