フレームワーク周りに疎いので実際にフレームワークを公開し、サンプルプロジェクトに取り込んで理解を深めたいと思います。
目次
フレームワークを作成する
他のアプリに配布するための外部公開用のライブラリです。フレームワークを作成する場合は独立したプロジェクトとして作成する必要があります。

フレームワーク用のプロジェクトを作成するとターゲットが黄色いカバンのようなアイコンになっていますね…

テンプレートとしてはプロジェクト名と同名のファイルが1つ作成されていましたが、Foundationをimportしているだけでした。

フレームワークとして他アプリから呼び出せるクラスを作成してみます。公開してもいいものはpublicで継承やオーバーライドなどをできないようにし、公開したくないものはprivateを利用します。
適当なFrameworkクラスを作成してみました。

フレームワークをビルドする
フレームワークの定義が完了したらプロジェクトをビルドします。
実機でビルドした場合は実機用の.frameworkが生成され、シミュレーターでビルドするとシミュレーター用の.frameworkが生成されます。これらは後から.xcframeworkという形でまとめるため2回ビルドを行なっておきます。

ビルドすると何も起こらないように感じますが、下記のパスに.frameworkが保存されます。
~/Library/Developer/Xcode/DerivedData/YourFramework/Build/Products/Debug-iphonesimulator/YourFramework.framework
.xcframeworkにまとめる
XCFrameworkを利用することで複数アーキテクチャのバイナリやプラットフォーム別フレームワークをまとめることができ、ビルド時にXcodeが自動で適切なものを選択してくれる仕組みになっています。
プロジェクト直下にFrameworksというディレクトリを作成します。

.xcframeworkを作成するために下記コマンドを実行します
xcodebuild -create-xcfamework -framework パス -framework パス -output フレームワーク名.xcframeworkそうするとFrameworks内に.xcframeworkが作成されました!

フレームワークを利用する
出来上がったフレームワークを利用してみます。
Target > General > Frameworks, Libraries, and Embedded Content >ドラッグ&ドロップ

importしたSampleFrameworkの中身を確認すると下記のような定義となっています。privateなものは見えないようになっていることが分かります。
