240 发简信
IP属地:北京
  • 120
    block分析

    本文主要介绍block的类型、循环引用的解决方法以及block底层的分析 block 类型 block主要有三种类型 NSGlobalBlock:全局block,存储在全局区...

  • 120
    锁的分析

    本文主要介绍常见的锁,以及synchronized、NSLock、递归锁、条件锁的底层分析 锁 先看一张大家都非常熟悉的图 可以看出,图中锁的性能从高到底依次是:OSSpin...

  • 120
    GCD原理(下)

    在上篇文章函数与队列和gcd原理分析(上)[https://www.jianshu.com/p/9c0b238c490a]中我们分析了gcd原理,dispatch_async...

  • 120
    函数与队列 和gcd原理分析(上)

    GCD 介绍 什么是GCD? 全称是Grand Central Dispatch 纯C语⾔,提供了⾮常多强⼤的函数 将任务添加到队列,并且指定执行任务的函数。 优势 GCD是...

  • ios内存五大分区

    iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 1. 栈区 定义 栈是系统数据结构,其对应的进程或者线程是唯一的 栈是向低地址扩展的数据结构 栈是一块连续的...

  • 120
    KVO原理

    1.kvo简介 KVO全称KeyValueObserving,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于KVO的实现机制,...

  • 120
    面试题分析~~

    1.Runtime Asssociate方法关联的对象,需要在dealloc中释放? 当我们对象释放时,会调用dealloc 1、C++函数释放 :objc_cxxDestr...

  • 120
    Method-Swizzling 方法交换

    method-swizzling 是什么? method-swizzling的含义是方法交换,其主要作用是在运行时将一个方法的实现替换成另一个方法的实现,这就是我们常说的iO...

  • 120
    分类与类扩展以及关联对象

    category分类 专门用来各类添加新的方法。 不能给类添加成员属性,添加了成员变量,也无法取到(注意:其实可以通过runtime给分类添加属性)。 注意:可以用runti...

  • 120
    类的加载(下)

    上篇文章我们了解了类的加载和分类的数据准备 这篇我们继续分析分类的加载时机以及是如何加载到类中的 当类加载时,进入到attachCategories方法中,初始化了一个倒序的...

  • 120
    类的加载(上)

    上一篇我们着重讲了dyld和objc的关联 今天继续深入了解后续的流程 上篇我们也了解到了_read_images的流程 首先继续深入了解map_images中的_read_...

  • 120
    dyld和objc关联

    上一篇我们讲述了dyld的加载流程 这篇文章我们来搞清楚dyld和objc的关联。 首先看一下objc4-781官方源码_objc_init方法 environ_init()...