(一)动态方法决议 案例如下 创建一个LGTeacher类,声明一个say666方法,方法不实现 unrecognized selector 经典的方法为实现奔溃,我们没有写...
分析lookUpImpOrForward源码流程 1.方法流程汇编当objc_msgSend 快速查找找不imp时 会调用MethodTableLookup 然后bl 跳转到...
方法本质和objc_msgSend 汇编源码分析 objc_msgSend(recevier, _cmd) 1:判断 recevier(消息接收者) 是否存在 recevie...
了解编译时和运行时 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个...
一.cache_t数据结构分析 类的底层结构有 isa,superclass,cache,bits, 现在来结节一下cache_t的内部结构 在cache_t的结构体成员中发...
类的结构分析 根据底层继承找到 objc_classimage.png obj_class 里面成员变量 isa, superclass,cache,bits 猜想 我们上述...
一.类的继承结构探索 以下面列子lldb 输出来探索 从分析isa的结构体可以得出x86的掩码是0x00007ffffffffff8和isa与上可以得到class 从上面输出...
一.了解clang Clang是⼀个C语⾔、C++、Objective-C语⾔的轻量级编译器。源代码发布于BSD协议下。Clang将⽀持其普通lambda表达式、返回类型的简...
一.先了解c和oc不同类型所对应字节如下图 二.了解内存对齐规则 *1:数据成员对⻬规则:结构(struct)(或联合(union))的数据成员,第⼀个数据成员放在offse...
问题1 alloc 是不是有了内存 指针? 用断点调试可以看出p1,p2,p3的指针内存地址是不一样的但是对象的的地址是一样的,可以得出一个结论:p1,p2,p3,开辟的内存...
循环&选择cmp(Compare)比较指令 CMP 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。 一般CMP做完判断后会进行跳转...
解决方法 CODE_SIGN_IDENTITY 、 终端执行 security find-identity -v -p codesigning、应该是没有你项目中那个标识的证...
多环境配置&mach-o和链接&Symbol 1.多环境配置 1.Project:包含了姓名所有的带,资源文件,所有信息。 2.Target:对指定代码和资源文件的具体构...