5

我的 Objective-C 课上有类似的东西

@interface PREFIX_MyClass {
...
@end

我想使用预处理器将其转换为:

@interface AwesomeMyClass {
...
@end

所以像

#define PREFIX_ Awesome

不起作用,因为它是单词的一部分。还有什么办法吗?我知道我可以使用这样的东西:

#define PrefixClass(NAME) Awesome##NAME

@interface PrefixClass(MyClass)

但我不喜欢这样,因为它破坏了代码的完整并在开发工具中引用了以下内容(即:在这种情况下为 Xcode)

4

2 回答 2

2

这不是很优雅,但是您可以使用预处理器来替换整个类名,而不仅仅是部分。

#define PREFIX_MyClass AwesomeMyClass
@interface PREFIX_MyClass

当然,如果您多次使用前缀并且它会更改,这将成为一个问题。您可以通过使用另一个调用另一个宏来添加前缀来解决此问题,这样只有一个宏包含实际的前缀。

#define ADD_PREFIX(name) Awesome##name
#define PREFIX_MyClass ADD_PREFIX(MyClass)
@interface PREFIX_MyClass

这仍然需要为您想要添加前缀的所有内容添加一个宏,但代码完成将识别该PREFIX_MyClass名称。

于 2012-05-03T01:58:54.970 回答
0

这并不完全是您所要求的,但它可能是实现目标的另一条途径。Xcode 允许你为你的项目定义一个类前缀。在文件导航器中选择您的项目,然后在文件检查器(右侧边栏的第一个“选项卡”)中,您将拥有以下内容:

在此处输入图像描述

您在“类前缀”字段中输入的任何文本都将添加到您在该项目中创建的任何类的名称之前。

于 2012-05-03T04:32:33.653 回答