240 发简信
IP属地:北京
  • 传送数据

    传输数据 movx source, destination 1、把立即数传送到寄存器和内存中 movl $0, %eax 0 to eax寄存器movl $0x80, %...

  • 用故事说透HTTPS

    HTTPS 涉及的知识点:1、数字证书2、数字签名3、对称加密4、非对称加密 参考用故事说透 HTTPS

  • sync 和 async区别

    同步,异步,串行,并行

  • 内存管理 Tagged Pointer

    Tagged Pointer通常创建对象,对象存储在堆中,对象的指针存储在栈中。我们要找到这个对象,就需要先在栈中,找到指针,然后通过指针找到堆中的对象。 这个过程比较繁琐,...

  • weak 底层实现原理

    总结:weak 是Runtime维护了一个hash(哈希)表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Valu...

  • NONPointer_isa 指针中存放与该对象内存相关的消息

    苹果将ISA设计成了联合体,在ISA中存储了与该对象相关的一些内存信息,因为 并不需要64个二进制全部都用来存储指针ISA 的结构 这里的 has_sidetable_rc ...

  • NSMutableArray 线程安全方案

    线程安全的NSMutableArray NSMutableArray本身是线程不安全的。多线程访问NSMutableArray 会出现异常和Crash 一、不能使用atomi...

  • Block

    Block Block 是C语言的扩充功能。是带有自动变量(局部变量)的匿名函数 Block 几种类型 1、_NSConcreteStackBlock 该类的对象Bloc...

  • 120
    KVO & KVC

    KVC 键值编码 使用字符串直接访问对象的属性 底层实现,当一个对象调用setValue方法时,方法内部会做以下操作:1、检查是否存在相应key的set方法,如果存在,就调用...

  • 120
    Runtime

    Category 的实现原理 Category 实际上是Category_t的结构体,在运行时,新添加的方法,都被以倒序插入到原有方法列表的最前面,所以不同的Category...

  • Autorelease 对象的内存管理

    AutoreleasePool 与Runloop 关系 主线程默认会开启Runloop, Runloop 会自动帮我们创建AutoreleasePool,并进行Push,po...

  • setNeedsLayout & setNeedDisplay

    layoutSubViews 方法 layoutSubviews 方法是用来设定subview的位置的方法, 是不能手动调用的。只能通过调用setNeedsLayout 方法...

  • Cocoapods 源码解析

    Pod install 会执行以下的操作:1、初始化全局config,将Podfile执行解析成对象,通过eval执行2、prepare 准备工作检查安装目录,必须在项目根目...

  • 120
    iOS 开发过程中8种锁

    OSSpinLock OSSpinLock 自旋锁,不会让等待的线程进入睡眠状态,效率高。OSSpinLock 不能保证安全。系统维护了5个不同的线程优先级/QoS: bac...

  • synchronized 详解

    关于synchronized 问题:1、锁是如何和与你传入的@synchronized的对象关联上的?2、@synchronized 会保持(retain, 增加引用计数)被...

  • 120
    dispatch_once 详解

    dispatch_once 是线程安全的 首次调用dispatch_once时,因为外部传入的dispatch_once_t变量值为nil,故vval会为NULL,故if判断...

  • 线程池设计

    线程池管理器(CustomThreadPool): 用于创建并管理线程池工作线程(CustomWorker):线程池中线程任务接口(基类)(CustomTask):每个任务必...

  • 120
    Runtime 实际运用

    runloop和线程一一对应runloop包含多个mode, mode包含多个 mode item(sources,timers,observers)runloop一次只能运...