1

我在标题中定义了一个@interfacefor 类,并在文件中定义了相应的实现。如果我在 Xcode 项目的不同目录中添加该类的另一个实现,我可以在“实用程序”栏的“文件”选项卡中指定“目标成员”,以将实现分配给特定目标。FooFoo.hFoo.mFoo.m

但是,这不适用于头文件。Foo.h如果我为类添加不同的标题,Foo则无法在“实用程序”栏的“文件”选项卡中分配“成员资格”。对于我声明的每个属性,我总是收到错误“类' Foo'的重复接口”,然后出现几个错误“属性具有先前的声明”。

如何使用 Xcode 4.5.2 为不同目标使用在不同标头中定义的具有相同名称的类?

更新:我已经尝试过此线程中建议的解决方案,但它在 Xcode 4.5.2 中不起作用,错误消息如上所示。

4

1 回答 1

3

由于您的 Foo 类在两个目标之间仅部分不同,因此我建议您有一个 Foo.h 和一个 Foo.m。然后,您使用编译器指令来处理这些差异。

转到每个目标的构建设置并在“其他 C 标志”下添加一个标志。例如,对于目标 A,您可以添加:

-DTARGETA

对于目标 B,您可以添加:

-DTARGETB

然后在 Foo.h 你可以这样做:

@interface Foo : NSObject

@property commonProperty;
#if defined(TARGETA)
@property targetAProperty;
#elif defined(TARGETB)
@property targetBProperty;
#endif

@end

为 Foo.m 做类似的事情。

于 2012-12-19T17:59:48.813 回答