概念 RunLoop是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个RunLoop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。 RunLoo...
概念 RunLoop是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个RunLoop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。 RunLoo...
概念 AutoreleasePool(自动释放池)是OC中的一种内存自动回收机制,它可以延迟加入AutoreleasePool中的变量release的时机。在正常情况下,创建...
热启动与冷启动 冷启动:App点击启动前,此时App的进程还不在系统里,内存中不包含app相关数据,需要系统新创建一个进程分配给App。 热启动: App在冷启动后用户将Ap...
LLVM概念 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-...
block概念 block本质上是一个OC对象(结构体),它享有所有OC对象的待遇,只不过普通OC对象用来封装数据,而block用来封装函数以及函数的调用环境。所谓封装函数,...
GCD 简介 全称是Grand Central Dispatch 纯C 语言,提供了非常多强大的函数 GCD的优势 GCD 是苹果公司为多核的并行运算提出的解决方案GCD 会...
KVO概念 KVO ->Key-Value observing,键值观察,当被观察对象中指定属性发现变化时,观察者就可以得到通知,进而进行后续操作。 KVO使用 根据KVO官...
KVC概念 KVC(Key-value coding)键值编码,是对NSObject的扩展来实现的,Objective-C中有个显式的NSKeyValueCoding类别名-...
设置代理方法即可解决git config --global http.proxy "localhost:port" http代理端口Mac端在系统偏好设置->网络->高级->...
dealloc 释放的对象 首先查看dealloc的底层源码 根据上述代码得知: 先查看isa相关信息来判断是否还包含信息1是0否 object_dispose -> obj...
我们知道dyld是链接各种库,而它本身也是一个库,从它初始化开始到init,大体流程就是_dyld_start --> dyldbootstrap::start --> dy...
汇编常用指令 sub 拉伸栈空间 str (store register) 将数据从寄存器中读出来,存到内存中. stp 是str的延伸,可以同时存储两个 ldr(load ...
栈 栈:是一种具有特殊的访问方式的存储空间后进先出, Last In Out Firt,LIFO) SP和FP寄存器 sp寄存器在任意时刻会保存我们栈顶的地址 fp寄存器也称...
初识汇编 我们在前期的学习中,了解到在逆向开发中,非常重要的一个环节就是静态分析.首先我们是逆向iOS系统上面的APP.那么我们知道,一个APP安装在手机上面的可执行文件本质...
通过上面这张图我们可以得知 中主要包含 、 、 以及 扩展类 SDWebImageManager 主要是对创建任务、判断是否包含下载任务、处理图片在本地还是需要网络请求逻辑(...
动态方法决议 首先我们在objc_msgSend的快速和慢速查找后都没有找到对应的方法,这时候我们就会去调用resolveMethod_locked,这是苹果给提供的一次机会...
消息查找流程 消息查找流程分为快速和慢速,快速查找是通过objc_msgSend在缓存中进行查找,如果存在就直接返回,如果不存在则会进入objc_msgSend_uncach...
补充说明结构体嵌套 结构体嵌套所需开辟的内存空间是结构体内最大长度数据成员(非结构体)所占大小的整数倍。 如图所示: myPerson本身作为结构体,遵循内存对齐原则,故而所...
一、完善isa结构中shiftcls赋值时>>3原因 当将cls信息存储在shiftcls中时,默认会从起始位置开始存储(0位),由于isa结构中起始三位已经存在相应的存储含...