[解決済み] xcode4におけるフレームワークとスタティックライブラリの違いと呼び出し方
質問
私はxcodeとobjective-cのかなり新しい人です。私は非常に基本的な質問をしたいです。
プロジェクトの設定で、バイナリをライブラリにリンクする際に、ワークスペースの他のプロジェクトからインポートされたフレームワークとライブラリについて違いがあることを確認しました。
最初の質問ですが、なぜフレームワークがあるのでしょうか?また、なぜライブラリがあるのでしょうか。私のライブラリはフレームワークにはならないのでしょうか?
そして、そこから .h ファイルから、インポートした静的ライブラリからクラスを呼び出すにはどうしたらよいでしょうか?
プレフィックスがあるのでしょうが、見つけられませんでした。 また、"ProjName/Myclass.h"も動作していません。
できる限り具体的にお願いします。
ありがとうございます。
どのように解決するのですか?
フレームワークが静的ライブラリに対して持つ最大の利点は、コンパイルされたライブラリ バイナリと任意の関連するヘッダーをパッケージ化する巧妙な方法として機能することです。それらは (Foundation や UIKit のような SDK の組み込みフレームワークのように) あなたのプロジェクトにドロップすることができ、(ほとんどの場合) 動作するはずです。
ほとんどのフレームワークは動的ライブラリを含んでいます。Mac Framework テンプレートを使用して Xcode で作成されたフレームワークは、動的ライブラリを作成します。iPhone は動的フレームワークをサポートしていません。そのため、iOS コードの再利用可能なライブラリは、代わりに静的ライブラリとして配布されることが一般的になっています。
静的ライブラリは良いのですが、ユーザー側で少し余分な作業が必要になります。プロジェクトをライブラリにリンクする必要があり、ヘッダーファイルをプロジェクトにコピーする必要があります。 または ビルド設定で適切なヘッダー検索パスを設定することにより、それらをどこかで参照する必要があります。
要約すると、ライブラリを配布する最良の方法はフレームワークとしてであるというのが私の意見です。iOS 用の "static" フレームワークを作成するには、基本的に、通常のフレームワークを使用して、コンパイルした静的ライブラリでバイナリを置き換えることができます。これは、私があるライブラリを配布する方法です。 Resty を配布する方法であり、将来的に私のライブラリを配布する方法です。
そのプロジェクトで提供されている Rakefile を見てみるとよいでしょう (ご存じないかもしれませんが、Rake は Ruby の Make に相当します)。私のプロジェクトをコンパイルするための一握りのタスクがあります (
xcodebuild
を使って)、iOS用の静的なフレームワークとしてパッケージングします。これは便利だと思うはずです。
別の方法として、あなたは これらのXcode 4テンプレート を使用することもできます。
2013年12月9日更新 : これは人気のある答えなので、私はライブラリ配布のための私の最初の選択が変更されたことを言うために編集しようと思いました。消費者または生産者としてのサードパーティライブラリのための私の最初の選択肢はCocoaPodsです。私はCocoaPodsを使用して自分のライブラリを配布し、フォールバックオプションとしてヘッダー付きのプリコンパイルされた静的ライブラリを提供しています。
関連
-
[解決済み] Objective-Cは構造体の使用を禁じていますか?
-
[解決済み] クラス 'test_coredataAppDelegate' の重複したインターフェイス宣言
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み] synthesize vs @dynamic、その違いとは?
-
[解決済み] NSStringにパーセント記号を追加する方法
-
[解決済み】iOS 7.0とシステム劣化で無効なコンテキスト0x0が表示される
-
[解決済み】NSStringが特定の文字で始まるかどうかを確認する方法
-
[解決済み] [Solved] UITableViewがReloadDataを完了したことを伝えるには?
-
[解決済み] 「FOUNDATION_EXPORTとexternの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Objective-C。NULL、nil、@""の違いは何ですか?
-
[解決済み] イニシャライザーの要素がコンパイル時定数でない
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] objectForKeyとvalueForKeyの違い?
-
[解決済み】iOS 7で非推奨のsizeWithFont:の代わりになるものは?
-
[解決済み】セマンティックな問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っている。
-
[解決済み】ブロック宣言の構文リスト
-
[解決済み] registerForRemoteNotificationTypes: は iOS 8.0 以降でサポートされていません。