我们上课了WayPoint.但在某些时候,我们决定将课程重命名为Placemark.但是,我们并不真的想要更改类的名称,因为它会导致对现有代码进行大量修改.因此,我typedef在头文件的底部添加了一行,并Placemark从此开始愉快地使用任何新代码.
@interface WayPoint : _WayPoint
@end
typedef WayPoint Placemark;
Run Code Online (Sandbox Code Playgroud)
但仍有一件事我不明白.如果我尝试在其他一些头文件中使用前向定义.我只能用:
@class WayPoint;
Run Code Online (Sandbox Code Playgroud)
如果我使用:
@class Placemark;
Run Code Online (Sandbox Code Playgroud)
我会收到错误消息:
将"地标"重新定义为一种不同的符号
为什么?
不知道为什么你不能使用Xcode的重构功能(简单重命名可以快速简便).但是,如果你真的想这样做,你可以使用更好的东西然后typedef:
@compatibility_alias Placemark WayPoint
Run Code Online (Sandbox Code Playgroud)
因为typedef Placemark是别名,您尝试将其用作类符号.
因此错误清楚地表明 将"地标"重新定义为一种不同的符号 ,这意味着您的类名和typedef别名是不同的符号.
| 归档时间: |
|
| 查看次数: |
6589 次 |
| 最近记录: |