开发者

How can you conditionally include protocols during compiliation?

Is it possible to conditiona开发者_开发问答lly include a protocol? For example, below is some code that does not work, but should give you an idea what I'm referring to. I only want the interface AdWhirlDelegate to be included if ads are turned on.

// this works fine
#if ADS_SUPPORTED
#import "AdWhirlView.h"
#endif

// this does NOT work
@interface MyAppDelegate : NSObject <UIApplicationDelegate #if ADS_SUPPORTED ,AdWhirlDelegate #endif>


You could do:

#if ADS_SUPPORTED
@interface MyAppDelegate : NSObject <UIApplicationDelegate,AdWhirlDelegate>
#else
@interface MyAppDelegate : NSObject <UIApplicationDelegate>
#endif

...but then IB can get a little confused. See this answer, which presents an alternative to that.


That won't work

Repeat the interface declaration twice , one with the protocol and one without blocked inside the #if/#else/#endif structure

Preprocessor directives will only work in a non nested way like your header include.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜