【发布时间】:2013-09-03 16:21:59
【问题描述】:
我有一个定义类接口的头文件:
// 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 上会有几个方法和几个目标
【问题讨论】:
-
这两个实现是否有很大的不同,以至于它们有理由放在不同的源文件中?如果没有,基于特定目标预处理器定义的#ifdef 可能是更好的选择。如果您决定保留两个文件,我建议更改它们的名称。当两个文件具有相同的名称时,我看到 Xcode 会感到困惑(构建良好,但有时会在编辑器中显示错误的文件)。
-
@mah - 有趣!感谢您的答复。我曾经使用过预处理器定义,因为我过去也使用过它们。该实现是为不同客户的应用程序主题化,因此实现之间有相当多的变化。关于更改名称的重要提示 - 我认为这是可能的。
-
类名和源文件名之间没有联系,所以绝对有可能——但最好以一种合理的方式命名它们……例如 MyClass_client1.m、MyClass_client2.m、等等
标签: iphone ios objective-c