如何获取经过@-指令预处理的Objective-C代码



如何查看经过预处理的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

最新更新