什么是类转储和料斗的原理

时间:2017-04-02 10:16:48

标签: objective-c xcode dump hopper

类转储和料斗的原理是什么?为什么他们可以抛弃objc的方法?为什么他们不能抛弃用C风格编写的函数?

1 个答案:

答案 0 :(得分:1)

二进制文件中的C函数是每个由虚拟地址标识的代码块。 Objective-c运行时在C中实现,因此当发送选择器时,会调用C函数来实际执行:

id objc_msgSend(id self, SEL op, ...);

第一个参数是接收选择器的类或实例。其次是selector又名char*名称。由于这些选择器名称显式作为参数传递,因此所有这些都需要在可执行二进制文件中处理。这就是倾销类的用武之地,因为与C函数虚拟地址相比,有更多的信息。