5

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

// 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 上会有几个方法和几个目标

4

2 回答 2

1

是的,这会很好,我也采取了类似的方法,除了我使用了条件编译,一个目标公开私有功能,另一个目标公开公共功能,但所有目标共享同一组源文件。

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

于 2013-09-03T16:26:06.863 回答
1

所以我实际上更喜欢OTHER_CFLAGS使用我的自定义标志设置目标设置,比如TARGET_FREE其中一个。然后在源代码中我可以写如下内容:

@implementation MyClass
+ (void) doThing {

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

}
@end
于 2013-09-03T16:31:47.127 回答