类转储和料斗的原理是什么?为什么他们可以抛弃objc的方法?为什么他们不能抛弃用C风格编写的函数?
答案 0 :(得分:1)
二进制文件中的C函数是每个由虚拟地址标识的代码块。 Objective-c运行时在C中实现,因此当发送选择器时,会调用C函数来实际执行:
id objc_msgSend(id self, SEL op, ...);
第一个参数是接收选择器的类或实例。其次是selector
又名char*
名称。由于这些选择器名称显式作为参数传递,因此所有这些都需要在可执行二进制文件中处理。这就是倾销类的用武之地,因为与C函数虚拟地址相比,有更多的信息。