2

いくつかの iOS アプリ間で共有したい小さなプライベート フレームワークを作成しました。

私が想定しているワークフローは次のとおりです。

  1. ソース管理から SimpleApp をプルします。
  2. ソース管理から BobFramework を取得します。
  3. どういうわけか、Xcode を使用して BobFramework を SimpleApp に埋め込みます。
  4. プロジェクトをビルドします。
  5. 終わり!

問題は、「Xcode を使用して埋め込む」ステップをどのように達成するかです。

これを行うための段階的な手順が見つかりません。Apple のドキュメントは時代遅れの嘘です。

私が見つけたすべての Stack Overflow の質問は、読者が全体的な手順を知っていることを前提としており、暗黙の手順を埋めるのに十分なコンテキストの手がかりを集めることができません。実際、多くの疑問は、Apple から最新の公開された手順がないという事実から生じていると思います。そのため、多くの人が暗黙のまたは推測された手順に従っています。

私が見つけた最も直接的で、シンプルで、完全で、最新の一連の手順は、主に Swift に適用されます。Swift の手順は理にかなっており、それを使用していればよかったのですが、Objective-C を使用しています。

私が推測している手順に基づいていくつかの実験を試みましたが、正しい手順が何であるかについては非常に多くの可能性があるため、現時点では特定の問題の1つを投稿することは適切なアプローチではないと思います. 結局のところ、問題に至るまでに行ったことはすべて間違っている可能性があります。

4

1 に答える 1

2

これを理解するのにしばらく時間がかかりましたが、そうしました。いくつかのスクリーンショットを使用して、より精巧な回答をブログに投稿しました。

ここで、スタック オーバーフローのためにその回答を要約します。レシピを例に説明します。

出発点:

  • Pen1 という名前のプロジェクトを持つ SandBox2 という名前のワークスペース。
  • BobLib は、独自のプロジェクト内のフレームワークの名前です。
    • ファイルによって作成 | 新しい | プロジェクト、iOS | フレームワークとライブラリ | ココア タッチ フレームワーク。
    • 私の特定の状況をシミュレートする別のプロジェクトで。機会があれば、すでにワークスペースの一部であるフレームワークから始める必要があります。
    • ヘッダー ファイル Newhart.h には、doThatThingメソッド宣言が含まれています。

目標: Pen1 の ViewControllerdoThatThingが Newhart クラスのインスタンスを呼び出す。

手順:

  1. BobLib.h に Newhart.h をインポートする#import <BobLib/Newhart.h>
  2. Newhart.h をpublicとして指定します。
    1. Project Navigator で Newhart.h を選択します。
    2. ユーティリティ エリアで | ファイル インスペクター | ターゲット メンバーシップを「プロジェクト」から「パブリック」に変更します。
  3. シミュレーターとデバイスの両方の BobLib をビルドします。
  4. BobLib.framework を Control キーを押しながらクリックし、[Finder に表示] を選択します。
  5. Xcode で Sandbox2 を開きます。
  6. BobLib.framework を Finder ウィンドウから Pen1 にドラッグします。
  7. プロジェクト | プロジェクト | ターゲット | 一般 | 組み込みバイナリ、BobLib.framework を追加します。
  8. BobLib.framework は既に Project | にあるはずです。ターゲット | 一般 | リンクされたフレームワークとライブラリ。
  9. アプリを実行してテストします。doThatThingNewhart インスタンスを呼び出すことができるはずです。
  10. これは、iOS 8 以降でのみ機能します。
于 2015-02-08T00:36:16.967 に答える