好的,我知道有很多关于此的帖子,但我仍然遇到问题。这是我正在尝试做的伪代码:
if(device is running iOS 5 or up)
@interface RootViewController : UIViewController <UIPageViewControllerDelegate, UIGestureRecognizerDelegate>
@property (strong, nonatomic) UIPageViewController *pageViewController;
else
@interface RootViewController : UIViewController <LeavesViewDelegate, UIGestureRecognizerDelegate>
@property (strong, nonatomic) LeavesViewController *leavesViewController;
endif
我是否认为我需要使用预处理器宏检查,因为它在头文件中?这是一个图书应用程序,如果它是 iOS 5 或更高版本(因此有 UIPageViewController),它应该使用 UIPageViewController,否则它会退回到 Leaves(https://github.com/brow/leaves)。我已经设置了所有代码。只需要知道如何告诉编译器使用哪个。我不认为使用任何运行时检查会起作用,因为我只需要编译 UIPageViewController 或 Leaves 的协议方法,而不是两者。而且我宁愿不使用完全独立的源文件。我试过使用这些检查:
#ifdef kCFCoreFoundationVersionNumber_xxx
#ifdef __IPHONE_xxx
#if __IPHONE_OS_VERSION_MAX_ALLOWED <__IPHONE_xxx
(有各种 xxx 的)
我在这里想念什么?
编辑:
我还在默认的 .pch 中注意到了这一点:
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
这让我想知道为什么相同的测试在我的 .h 文件中不起作用?