如何查看经过预处理的Objective-C代码,其中对@property和@synthesis等Objective-C指令进行了预处理?
我在Stackoverflow中搜索过这个主题,这里有一些关于如何查看预处理代码的提示,例如Xcode预处理器输出。然而,"预处理代码"并不涉及预处理的Objective-C指令。例如,在"预处理代码"中,像@property或@synthesis这样的Objective-C指令没有经过预处理。
以以下代码为例,
// ========= Person.h =========
@interface Person: NSObject
{
}
-(void) Print;
@property int age;
@end
// ========= Person.m =========
@implementation Person
-(void) Print
{
NSLog(@"Print_Age:%d", _age);
}
@end
我期望看到的是这样的东西:
// ========= Person.h =========
@interface Person: NSObject
{
int _age;
}
-(void) Print;
-(int) age;
-(void) setAge:(int) age;
@end
// ========= Person.m =========
@implementation Person
-(void) Print
{
NSLog(@"Print_Age:%d", _age);
}
-(int) age {
return _age;
}
-(void) setAge:(int) age {
_age = age;
}
@end
我怎么能看到它?
您的最后一句话包含答案:
@property或@synthesis未经过预处理
这些是语言的一部分,与预处理器无关。预处理后,您看不到这些构造,就像看不到while
循环一样。
如果你想看看它们被编译成什么,你可以检查汇编程序,Xcode菜单项Product > Perform Action > Assemble
。
HTH