我有一个框架,需要部分重写,并且正在采用AFNetworking。因此,第二版必须具有不同的超类(AFHTTPClient)。我试图有一个预处理器标志,并有条件地声明这一点。
这是我的代码:
#define TLC_FRAMEWORK_VERSION 2
#if TLC_FRAMEWORK_VERSION == 1
@interface TKSession : NSObject
#elif TLC_FRAMEWORK_VERSION == 2
@interface TKSession : AFHTTPClient
#endif
{
@private
NSMutableArray *_cachedShifts;
}
编译器(clang)给出一个错误,基本上是指出预处理之后编译器没有正确读取该声明。它认为看到了这一点:
#define TLC_FRAMEWORK_VERSION 2
{
@private
NSMutableArray *_cachedShifts;
}
...
我在做什么错/想念?
最佳答案
#define TLC_FRAMEWORK_VERSION 2
#if TLC_FRAMEWORK_VERSION == 1
@interface TKSession : NSObject
#else
@interface TKSession : AFHTTPClient
#endif
{
@private
NSMutableArray *_cachedShifts;
}
但最好定义如下内容:
#if TLC_FRAMEWORK_VERSION == 1
typedef NSObject TLCHTTPClient;
#else
typedef AFHTTPClient TLCHTTPClient;
#endif
@interface TKSession : TLCHTTPClient
{
@private
NSMutableArray *_cachedShifts;
}
更容易阅读
关于ios - 您如何使用预处理器有条件地声明新类的父类(super class)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18853455/