14

私は既存の OSX アプリの iOS バージョンを作成していますが、2 つのアプリ間でコードを共有するためのベスト プラクティスは何か疑問に思っています。問題のコードは、基盤フレームワークと Sqlite 動的ライブラリのみに依存しているため、両方のプラットフォームで正常にコンパイルおよび実行されるはずです。

3つの可能なオプションがあるように私には思えます:

  1. OSX および IOS ターゲットを使用して単一のプロジェクトを作成し、必要に応じて各ターゲットにソース ファイルを追加します。
  2. OSX アプリと IOS アプリ用に 2 つの個別のプロジェクトを作成し、共有コードをワークスペース内の共通の場所に配置して、両方のプロジェクトへの参照として追加します。
  3. 3 つのプロジェクトを作成します。OSX アプリ、IOS アプリ、および OSX と IOS ターゲットを持つ共有静的ライブラリです。各ライブラリ ターゲットをそれぞれのアプリケーションに追加します。

上記のアプローチの 1 つが他の 2 つよりも優れている理由はありますか? そうでない場合は、オプション 2 が最も簡単なようです。

4

1 に答える 1

5

私はこれを行い、3番目のアプローチを取りました。別の静的ライブラリ。私がこのアプローチを選んだ理由は、それを独自の git リポジトリ内に保持し、後で他のプロジェクトと共有できるためです。

ただし、克服すべきことの 1 つは、コンパイルするプラットフォームを決定することです。ライブラリのソース/ヘッダーファイル内で定義SYSINFO_IOSまたは使用される次のコードフラグメントを使用して、これを解決しました。SYSINFO_OSX

#import <TargetConditionals.h>

#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#define SYSINFO_OSX 1
#else
#define SYSINFO_IOS 1
#endif

このフラグメントは、独自のヘッダー ファイルにある必要があります。

于 2012-09-17T09:33:36.403 に答える