0

我有一个需要部分重写的框架,并且正在采用 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;
}
...

我在做什么错/错过了什么?

4

2 回答 2

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;
}

更容易阅读

于 2013-09-17T15:57:41.413 回答
-2

好的,我会回答我自己的问题。这是一个范围问题,我使用该标志导入的标头由于某种原因未正确解析。我太忙了,无法处理编译器问题或异常,所以我在本地声明了标志。

于 2013-09-17T15:17:15.893 回答