我有一个框架,我需要部分重写,并采用AFNetworking。因此,版本2需要具有不同的超类(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;
}
...
我做错了什么/失踪了?
答案 0 :(得分:0)
#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;
}
更易于阅读
答案 1 :(得分:-2)
好的,我会回答我自己的问题。这是一个范围问题,我使用该标志导入的标头由于某种原因未被正确解析。我太忙了,无法解决编译器问题或异常,所以我在本地声明了这个标志。