是否可以使用编译器指令来控制是否实现了特定的委托?

例如,在下面的代码中,如果我们定义了常量,我只想包含一个库:

#ifdef kShouldLoadFromCSV
#import "CHCSVParser.h"
#endif

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, CHCSVParserDelegate>{

如果kShouldLoadFromCSV未定义,我不想实现CHCSVParserDelegate。我试过将compile指令粘贴在接口声明中,但这没有用。

有没有办法做到这一点?

最佳答案

您可以这样做:

#if kShouldLoadFromCSV
    @interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, CHCSVParserDelegate>{
#else
    @interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>{
#endif

或者,如果您希望(也许更难阅读)关于口味的问题:
    @interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate
#if kShouldLoadFromCSV
      , CHCSVParserDelegate
#endif
>{

您必须记住,预处理器不支持语法,只会影响编译器的输入。

10-08 05:45