背景:Swift
をプロジェクトに実装する方法についての知識を理解し、拡張するために、テストCoreData
プロジェクトを開始しました。そしてもちろん、コードをテストして遊んでいるときはいつでも、私はいつも脇道になり、接線のトピックに行き詰まっているようです。これは、フレームワークまたはライブラリをXCodeプロジェクトに直接リンクする必要がある場合です。
それで、これがどのように起こったのか...私はNSManagedObject
ファイルにimport CoreData
を(書き込む)必要があるSwift
のサブクラスを作成しています。そして、すべてが完璧に機能しているようです。エラーや警告などはありません。ただし、「プロジェクトとターゲットのリスト」でプロジェクトにリンクされているフレームワークとライブラリを確認すると、何もリストされていません。 import UIKit
しなければならないときも同じことが言えます。明らかに、これらのフレームワークを直接リンクするオプションがありますが、そうする必要はないようです。
私の質問に関しては、XCodeプロジェクトに明示的にリンクする必要のないデフォルトのフレームワークはありますか、それともプロジェクトを展開用にパッケージ化するときにこれらのフレームワークを最終的にリンクする必要がありますか?そうでない場合、より広い観点から、フレームワークとライブラリをXCodeプロジェクトに明示的にリンクする必要があるのはいつですか?
編集***
すべてのAppleフレームワークがすでに自動的にリンクされている場合....プロジェクトに追加できるようにすることのポイントは何ですか。(気をつけてください、CoreData.framework
は元々リンクされていませんでした写真のようにはっきりと。)
魔法は起こりません。
これは、Xcode(LLVM)によって導入されたモジュールと自動リンクが原因です。
(関連キーワード:@ importではなく#importおよびビルド設定オプションモジュールを有効にする、フレームワークを自動的にリンクします、デフォルトでは、両方ともYESに設定されています)。
これらの2つのキーワード(モジュール、自動リンクフラグオプション)の組み合わせは、モジュールをサポートする関連するすべてのフレームワークを自動的に検索して追加しようとします。
Xcode 5(実際にはLLVMおよびclangコンパイラフロントエンド)から導入されたように、内部的には、上記のデフォルトプロジェクト設定のLLVMは、モジュールシステムを使用して、@ import /#を介してコード内のフレームワークを自動的にリンクします。インポートステートメント。
フレームワークが自動的にリンクされると、開発者はそれらをリンクされたフレームワークとライブラリに配置する必要がなくなります。
したがって、Appleシステムフレームワーク(デフォルトフレームワーク)をXcodeプロジェクトに明示的にリンクする必要がないのはそのためです。
モジュールはXcodeで使用可能であったため、すべてのシステムフレームワークリストを.pchファイル(プリコンパイル済みプレフィックスヘッダー)にインポートし続ける必要はありません。そのため、pchセットアップもNOに設定され、デフォルトではバックグラウンドで必要ありません。
私の知る限り、これまでの制限はAppleシステムフレームワークでのみ利用可能であり、ユーザーフレームワークやその他のC/C++ライブラリには適用できないことを意味します。
それが役に立てば幸い。