【发布时间】:2012-08-07 13:58:34
【问题描述】:
由于 Objective-C 是 C 的超集,所有 Objective-C 特定的语句都在编译 .m 文件期间转换为 C 语句(我猜是由预处理器)。因此,例如,像 [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() 等函数的调用,以便分别创建类、添加其实例变量、添加其方法和注册类(这样类struct 实际上是在运行时定义的,而不是作为 struct 从可执行文件中加载)?
【问题讨论】:
标签: objective-c cocoa objective-c-runtime