我们有一个班级WayPoint
。但在某些时候,我们决定将班级重命名为Placemark
。但是,我们并不真的想要更改类的名称,因为它会导致对现有代码进行大量修改。因此,我在头文件的底部添加了一行typedef
,并且从那以后开始在任何新代码中开始使用Placemark
。
@interface WayPoint : _WayPoint
@end
typedef WayPoint Placemark;
但仍有一件事我不明白。如果我尝试在其他一些头文件中使用前向定义。我只能用:
@class WayPoint;
如果我使用:
@class Placemark;
我会收到错误消息:
重新定义'地标'作为一种不同的符号
为什么呢?
答案 0 :(得分:6)
不确定为什么不能使用Xcode的重构功能(简单重命名可以快速简便)。但是如果你真的想这样做,你可以使用更好的东西,然后输入type:
@compatibility_alias Placemark WayPoint
答案 1 :(得分:5)
因为typedef Placemark是别名,并且您尝试将其用作类 符号
所以错误清楚地表明了 将“地标”重新定义为另一种符号 这意味着您的类名和typedef别名是不同的符号。