在Objective-C中重新定义为不同类型的符号

时间:2014-10-29 14:12:47

标签: objective-c

我们有一个班级WayPoint。但在某些时候,我们决定将班级重命名为Placemark。但是,我们并不真的想要更改类的名称,因为它会导致对现有代码进行大量修改。因此,我在头文件的底部添加了一行typedef,并且从那以后开始在任何新代码中开始使用Placemark

@interface WayPoint : _WayPoint
@end
typedef WayPoint Placemark;

但仍有一件事我不明白。如果我尝试在其他一些头文件中使用前向定义。我只能用:

@class WayPoint;

如果我使用:

@class Placemark;

我会收到错误消息:

  

重新定义'地标'作为一种不同的符号

为什么呢?

2 个答案:

答案 0 :(得分:6)

不确定为什么不能使用Xcode的重构功能(简单重命名可以快速简便)。但是如果你真的想这样做,你可以使用更好的东西,然后输入type:

@compatibility_alias Placemark WayPoint

答案 1 :(得分:5)

  

因为typedef Placemark是别名,并且您尝试将其用作类   符号

所以错误清楚地表明了 将“地标”重新定义为另一种符号 这意味着您的类名和typedef别名是不同的符号。