上篇文章介绍了内存管理方案中的Tagged Pointer 小对象类型,这篇文章来介绍下另一种方案sideTable 散列表 由上述代码得知散列表其实就是个结构体,我们发现有...
上篇文章介绍了内存管理方案中的Tagged Pointer 小对象类型,这篇文章来介绍下另一种方案sideTable 散列表 由上述代码得知散列表其实就是个结构体,我们发现有...
原题 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例: X X X XX ...
block分类 全局block __NSGlobalBlock__:位于全局区,在Block内部不使用外部变量,或者只使用静态变量和全局变量 栈区block __NSStac...
1.load和initialize方法的调用原则和调用顺序? load load方法在应用程序加载过程中(dyld)完成调用,在main之前 在底层进行load_images...
上篇文章我们探索了read_images里面的几个比较重要的流程,这篇我们接着上篇文章剩下的realizeClassWithoutSwift方法来讲解 realizeClas...
概述:RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别...
思考:苹果是如何保证iPhone上运行的App都是经过官方允许的呢? 回答:最简单的方式就是通过官方生成的非对称加密的一对公私钥。在iOS系统中内置一个公钥,私钥有苹果后台保...
定义:将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表)
定义: 1. 用常数1取代运行时间中所有常数 3->1 O(1) 2. 在修改运行次数函数中,只保留最高阶项 n^3+2n^2+5 -> O(n^3) 3. 如果在最高阶存在...
链式存储的特点:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,每个结点都必须有指针域。 定义:每一个结点只含有一个指针域的链式...
Hash特点:1.算法是公开的2.对相同数据运算,得到的结果是一样的3.对不同数据运算,如MD5得到的结果默认是128位,32个字符(16进制标识)。4.这玩意没法逆运算5....
在分析之前,先看下3个变量的 内存地址与指针地址的区别alloc: 分别对3个对象的内容、内存地址、指针地址 %p -> &p1:是对象的指针地址,%p -> p1: 是对象...
这篇文章与上一片文章[https://www.jianshu.com/p/6dcf73a6c13f]区别在于,NSObject中的alloc与自定义类中的alloc的源码流程...
获取内存大小的3种方式 sizeof class_getInstanceSize malloc_size sizeof 它是一个操作符,并不是一个函数 一般使用sizeof计...
今天来分析下alloc中的3个核心中的initInstanceIsa方法(将内存地址与cls绑定),首先我们先了解下联合体 联合体(union) 构造数据类型的方式由两种 结...
分析之前先引入一张图 dyld在进行类加载时是由 与 这两大方法来进行加载的,而这两大方法是由 -> 这两个流程方法进行加载的 objc_init() 由上述代码可知,在_o...
上一篇我们探索了类的加载流程等一系列方法以及懒加载类和非懒加载类这节课我们来探索下分类的加载流程 分类的本质 首先现在main.m中添加LGPerson的分类 clang -...
这篇文们来讲解下扩展和关联对象 扩展分析 首先我们先在main.m文件中实现扩展 然后clang -rewrite-objc main.m -o main.cpp生成main...
sel 和 imp 在讲Method Swizzling前先讲一下sel 和 imp sel:方法编号,在read_images期间就就编译进入内存 imp:函数指针地址,寻...