2017-12-05 5 views
0

私はとても簡単なフレームワークプロジェクト、MyFrameworkを構築しています。フレームワークは、単一のグローバル関数myFunctionを定義します。 フレームワークは2つのグローバル変数MyFrameworkVersionNumberとMyFrameworkVersionStringも定義しています。(これらの2つの変数はXcodeによって私のために作成されました)カスタムフレームワークを埋め込むことができないのはなぜですか?

私は非常に単純なアプリケーションプロジェクトMyApplicationを持っています。私は、フレームワークパッケージ(フレームワークを構築することによって生成されたDerivedDataのMyFramework.framework)をXcode Navigatorにドラッグアンドドロップして、プロジェクトのGeneralのEmbedded Binariesセクションでフレームワークを選択することで、アプリケーションプロジェクトにフレームワークを追加しますタブ。

変数MyFrameworkVersionNumberを参照するMyApplicationにコードを追加すると、MyApplicationを正常にビルドして実行することができます。

関数myFunctionを参照するMyApplicationにコードを追加すると、MyApplicationをビルドできません。


最初の更新


私は突然、カルタゴは、私がやろうとしています正確に何をしていることを思い出しました。だから、私はCarthageを使ってMyFrameworkとVoilaを作りました! - フレームワークのCarthageビルドをアプリケーションプロジェクトにドラッグ&ドロップし、それをうまく使用できます。それでは、私の質問は次のようになっています:カーセージは私には何を知らないのですか?

答えて

0

ああ天国のために!それはとても簡単であることが判明しました。 MyFrameworkは、汎用iOSデバイス(arm64アーキテクチャ)用に構築されていました。 MyApplicationは、シミュレータ(x86_64アーキテクチャ)用にビルドされていました。私がそれらの2つを合わせるとすぐに、すべてはうまくいった。カーセージの構築がうまく機能する理由は、汎用バイナリ(すなわち、両方のアーキテクチャを含むもの)を生成するからです。

アーキテクチャに関係なくMyFrameworkVersionNumberグローバル変数にアクセスできた理由はまだ分かりません。しかし、私は時間の良さで明らかにされる情報の秘密のビット(おそらくは両方のアーキテクチャで同じように構造化されたヘッダーにあるようなもの)としてその小さなミステリーを延期することは大丈夫です。

関連する問題