根据iOS版本有条件地包括标题

Tim*_*imD 8 iphone objective-c ios

我正在尝试使用具有iOS5和iOS4.3风格的库.我遇到的问题是有条件地包含正确的版本,即:

对于iOS5:

#include ios5stuff.h
@implementation
  // do stuff
@end
Run Code Online (Sandbox Code Playgroud)

对于iOS4

#include ios4stuff.h
@implementation
  // do stuff
@end
Run Code Online (Sandbox Code Playgroud)

我可以看到如何在类的实现块中有条件地包含东西,但不在此之外.谁能建议最好的方法呢?

Dar*_*ust 18

你应该能够这样做(未经测试):

#import <Availability.h>

#if defined(__IPHONE_5_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
#import "my_header_for_io5_and_above.h"
#elif defined(__IPHONE_4_3) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_3
#import "my_header_for_ios4.3.h"
#else
#error Your SDK is too old ! Need at least 4.3.
#endif
Run Code Online (Sandbox Code Playgroud)