240 发简信
IP属地:北京
  • 120
    RunLoop

    概念 RunLoop是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个RunLoop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。 RunLoo...

  • 120
    AutoReleasePool底层分析

    概念 AutoreleasePool(自动释放池)是OC中的一种内存自动回收机制,它可以延迟加入AutoreleasePool中的变量release的时机。在正常情况下,创建...

  • 120
    启动优化

    热启动与冷启动 冷启动:App点击启动前,此时App的进程还不在系统里,内存中不包含app相关数据,需要系统新创建一个进程分配给App。 热启动: App在冷启动后用户将Ap...

  • 120
    LLVM编译流程

    LLVM概念 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-...

  • 120
    block底层

    block概念 block本质上是一个OC对象(结构体),它享有所有OC对象的待遇,只不过普通OC对象用来封装数据,而block用来封装函数以及函数的调用环境。所谓封装函数,...

  • 120
    GCD

    GCD 简介 全称是Grand Central Dispatch 纯C 语言,提供了非常多强大的函数 GCD的优势 GCD 是苹果公司为多核的并行运算提出的解决方案GCD 会...

  • 120
    KVO底层分析

    KVO概念 KVO ->Key-Value observing,键值观察,当被观察对象中指定属性发现变化时,观察者就可以得到通知,进而进行后续操作。 KVO使用 根据KVO官...

  • 120
    KVC底层分析

    KVC概念 KVC(Key-value coding)键值编码,是对NSObject的扩展来实现的,Objective-C中有个显式的NSKeyValueCoding类别名-...

  • Failed to connect to github.com port 443: Operation timed out

    设置代理方法即可解决git config --global http.proxy "localhost:port" http代理端口Mac端在系统偏好设置->网络->高级->...

  • 120
    底层相关面试题分析

    dealloc 释放的对象 首先查看dealloc的底层源码 根据上述代码得知: 先查看isa相关信息来判断是否还包含信息1是0否 object_dispose -> obj...

  • 120
    类的加载

    我们知道dyld是链接各种库,而它本身也是一个库,从它初始化开始到init,大体流程就是_dyld_start --> dyldbootstrap::start --> dy...

  • 汇编三

    汇编常用指令 sub 拉伸栈空间 str (store register) 将数据从寄存器中读出来,存到内存中. stp 是str的延伸,可以同时存储两个 ldr(load ...

  • 120
    汇编二

    栈 栈:是一种具有特殊的访问方式的存储空间后进先出, Last In Out Firt,LIFO) SP和FP寄存器 sp寄存器在任意时刻会保存我们栈顶的地址 fp寄存器也称...

  • 120
    初始汇编

    初识汇编 我们在前期的学习中,了解到在逆向开发中,非常重要的一个环节就是静态分析.首先我们是逆向iOS系统上面的APP.那么我们知道,一个APP安装在手机上面的可执行文件本质...

  • 120
    SDWebImage 实现原理

    通过上面这张图我们可以得知 中主要包含 、 、 以及 扩展类 SDWebImageManager 主要是对创建任务、判断是否包含下载任务、处理图片在本地还是需要网络请求逻辑(...

  • 120
    消息转发流程

    动态方法决议 首先我们在objc_msgSend的快速和慢速查找后都没有找到对应的方法,这时候我们就会去调用resolveMethod_locked,这是苹果给提供的一次机会...

  • 120
    objc_msgSend慢速查找流程

    消息查找流程 消息查找流程分为快速和慢速,快速查找是通过objc_msgSend在缓存中进行查找,如果存在就直接返回,如果不存在则会进入objc_msgSend_uncach...

  • 120
    类方法及成员变量存储

    补充说明结构体嵌套 结构体嵌套所需开辟的内存空间是结构体内最大长度数据成员(非结构体)所占大小的整数倍。 如图所示: myPerson本身作为结构体,遵循内存对齐原则,故而所...

  • 120
    从isa到类的结构分析

    一、完善isa结构中shiftcls赋值时>>3原因 当将cls信息存储在shiftcls中时,默认会从起始位置开始存储(0位),由于isa结构中起始三位已经存在相应的存储含...