由于 Objective-C 是 C 的超集,所有 Objective-C 特定的语句都在编译 .m 文件期间转换为 C 语句(我猜是由预处理器)。因此,例如,消息表达式 like[receiver method]
被转换为对消息传递函数的调用objc_msgSend(receiver, selector)
。
我的问题是:如果我有这样的类定义:
@interface ClassA {
int var1;
float var2;
id var3;
}
-(void) method1;
-(int) method2: (int) num1;
@end
@implementation ClassA
-(void) method1 {
// Implementation of the method
}
-(int) method2: (int) num1 {
// Implementation of the method
}
@end
它被编译器转换成什么(在 2.0 版本的 Objective-C 中)?它是否被转换为对函数的调用,如objc_allocateClassPair()
、和来自可执行文件的结构)?class_addIvar()
class_addMethod()
objc_registerClassPair()