コードを共有する Mac アプリケーションと iPad アプリケーションを含むプロジェクトに取り組んでいます。条件付きコンパイル スイッチを使用して Mac 固有のコードを iPhone プロジェクトから除外したり、その逆を行うにはどうすればよいですか? TARGET_OS_IPHONE
とTARGET_OS_MAC
はどちらも 1 であることに気付きました。したがって、どちらも常に true です。特定のターゲット用にコンパイルするときにのみ true を返す、使用できる別のスイッチはありますか?
ほとんどの場合、ファイルを2 つのプロジェクトのプリコンパイル ヘッダーに移動#include <UIKit/UIKit.h>
して連携させることができました。#include <Cocoa/Cocoa.h>
RSS フィードと Evernote からデータを取得するモデルといくつかのユーティリティ コードを共有しています。
特に、[NSData dataWithContentsOfURL:options:error:]
iOS 3.2 以前および Mac OS 10.5 以前では、iOS 4 および Mac OS 10.6 の場合とは異なり、この関数は options パラメーターに対して異なる定数を使用します。私が使用している条件は次のとおりです。
#if (TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_2)) || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5))
これは機能しているようですが、これが防弾であることを確認したいと思います。私の理解では、Mac のバージョンが 10.6 に設定されていて、iOS のバージョンが 3.2 に設定されている場合、iOS 3.2 用にコンパイルしていても新しい定数が使用されますが、これは正しくないようです。
助けてくれてありがとう!