これについて多くの投稿があることは知っていますが、まだ問題があります。私がやろうとしていることの擬似コードは次のとおりです。
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 ファイルで機能しなかったのはなぜだろうか?