6

私の質問は次のとおりです。iPhone 用に設計されたアプリケーションがあり、コードをフォークすることにしました。つまり、この初期段階で、iPhone 用と iPad 用の 2 つのバージョンのアプリケーションを開発することにしました。

私の質問はこれです: コードをフォークするにはどうすればよいですか? 両方のバージョンで 1 つのプロジェクトを引き続き使用したいのですが、明らかに、iPhone 用のコード セクションと iPad 専用の他のセクションを作成する必要があり、もちろん、両方のリリースに共通する多くの部分があります。

コードを混乱させずにそれを行うにはどうすればよいですか?

ベストプラクティスは何ですか? 助けてくれてありがとう。

4

4 に答える 4

3

You can configure your XCode project to use multiple targets, then you can assign some source code file to one target or to another or to both

于 2010-02-21T15:49:22.437 に答える
2

複数のターゲットの問題は、配布モデルと競合する可能性があることです。

私の理解では、iPad と iPhone のアプリケーションは単一のバイナリとして配布されます。アプリケーションは、実行時に iPad または iPod のどちらのユーザー インターフェイスを表示するかを決定しました。

つまり、「Foo」と「Foo iPad Edition」というストアでアプリを分けたくない場合、複数のターゲットを使用することはできず、何とか1 つのコード ベースで作業する必要があります。

アプリには多くの条件付きのものがある可能性があるため、これはちょっと嫌いです。iPad の場合はこれを行い、そうでない場合はそれを行います。iPhone の場合は、このビュー コントローラーを表示します。それ以外の場合は、他のビュー コントローラーを表示します。これが素敵なコードにつながるとは思いません。

つまり、基本的に 2 つのコード ベースを作成し、アプリのかなり早い段階で iPad または iPhone の完全なコード パスを使用することを決定します。

于 2010-02-21T17:42:41.057 に答える
1

私はあなたのポイントに返信します:1)「その割り当てを行う方法」私の場合、プロジェクトメニューから新しいターゲットを作成する必要があります。私はiPhoneゲームに2つの異なるターゲットを使用しています(通常と無料(ライト)バージョン)

  so I created a second Target of Type Application
  this will add a Target to the Groups & Files panel
  and will create a new Info.plist file

  in the Group&File you can show more columns (by right clicking)
  on "Group&Files"), here you have to show the "Target Memebership column"
  for each file you can decide if it is part of a target by pressing the
  corresponding check box

2) 「コードの一部について」 iPad アプリケーションの開発に使用されている現在のベータ SDK に、コンパイル中にテストできる #define が含まれているかどうかはわかりません条件付きコンパイルを行う

複数のターゲットを使用したアプリケーションの構築に関する非常に詳細な情報は、専用の Apple ドキュメントで見つけることができます iPhone Dev Center からダウンロードできます このガイド「Xcode Project Management Guide」を読む必要があります

于 2010-02-22T19:13:21.573 に答える
1

私は iPhone 開発者ではありませんが、St3fan が示していること (単一のバイナリとして配布する必要があること) から、これらはファクトリ パターンの典型的なケースのように思えます。異なるものはすべて (共通のインターフェースを使用して) 2 つの別々の方法で実装され、ファクトリは iPhone または iPad 上にあるかどうかに基づいて異なる実装を吐き出します。共通コードは変更する必要がないため、そのまま使用できます。

于 2010-02-21T18:12:45.280 に答える