是否可以在XCode中为每个目标实现多个实现?

时间:2013-09-03 16:21:59

标签: iphone ios objective-c

我有一个定义类接口的头文件:

// MyClass.h - included in all targets
//
@interface MyClass
+ (void) doThing;
@end

我有两个不同的实现文件 - 每个目标一个。

// MyClass+targetA.m - Only included in targetA
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetA"); }
@end


// MyClass+targetB.m - Only included in targetB
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetB"); }
@end
  • 这种方法有什么问题吗?
  • 是否有更好或更简单的方法来自定义每个目标的行为?

MyClass方法将用于主题化应用程序的外观。 MyClass上有几种方法和几个目标

2 个答案:

答案 0 :(得分:1)

是的,它会正常工作,我采取了类似的方法,除了我使用了条件编译,一个目标公开私有功能,另一个目标暴露公共功能,但所有目标共享同一组源文件。 / p>

然而,我们两种方法的结果是相同的。

答案 1 :(得分:1)

所以我实际上更喜欢在目标设置中使用OTHER_CFLAGS等自定义标记为其中一个设置TARGET_FREE。然后在源代码中我可以写出类似的内容:

@implementation MyClass
+ (void) doThing {

#ifdef TARGET_FREE 
    // Code for one target
#else
    // Code for another
#endif

}
@end