是否可以有条件地包含协议?例如,下面是一些不起作用的代码,但应该让你知道我指的是什么。我只希望在打开广告时包含AdWhirlDelegate界面。
// this works fine
#if ADS_SUPPORTED
#import "AdWhirlView.h"
#endif
// this does NOT work
@interface MyAppDelegate : NSObject <UIApplicationDelegate #if ADS_SUPPORTED ,AdWhirlDelegate #endif>
答案 0 :(得分:2)
你可以这样做:
#if ADS_SUPPORTED
@interface MyAppDelegate : NSObject <UIApplicationDelegate,AdWhirlDelegate>
#else
@interface MyAppDelegate : NSObject <UIApplicationDelegate>
#endif
......但是IB可能会有点困惑。见this answer,它提供了替代方案。
答案 1 :(得分:0)
这不起作用
重复两次接口声明,一次使用协议,一次不阻塞#if /#else /#endif结构
预处理程序指令只能以非嵌套方式工作,例如标题包含。