私は、問題と可能な解決策に関する詳細を紹介する別の質問を見つけました。将来の改良の対象となる既知のバグがあるようです。Swiftフレームワークサブモジュールを実際にプライベートにするにはどうすればいいですか?
Objective C classes within an iOS Swift-based dynamic framework
私はスウィフトフレームワークを開発していると私は、フレームワーク内のいくつかのObjective-Cのコードを使用しています。これまでのところ、私のモジュールのマップは次のようになります。あなたは(そして、たとえば、あなたがCocoapodsを使用してフレームワークをインストールする場合は、アプリケーションへのimport MyModule
:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
explicit module Private {
header "MyTools.h"
}
}
私の懸念はMyTools.h
からすべてのAPIは、フレームワークの外から見えるということですMyModule.Private)、MyTools.h
にアクセスすることはできません。 MyToolsをフレームワーク外から見えないようにする方法はありますか?
PS。私はフレームワークを配布するためにCocoapodsを使用しています。ここに私のpodspec(最も重要な部分)があります:
s.module_map = 'Pod/MyModule.modulemap'
s.frameworks = 'CoreData', 'CoreTelephony', 'SystemConfiguration'
s.resources = 'Pod/Classes/MessageStorage/*.xcdatamodeld'
s.public_header_files = 'Pod/Classes/**/*.h'
s.private_header_files = 'Pod/Classes/MyTools/**/*.h'
s.source_files = 'Pod/Classes/**/*.{h,m,swift}'
PSSです。私の傘のヘッダーはインポートされませんMyTools.h
PSSS。メインモジュールからヘッダーを除外しようとしました:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
exclude header "MyTools.h"
explicit module Private {
header "MyTools.h"
}
}
No luck。
プライベートヘッダーをモジュールから除外しようとしましたか? – user28434
@ user28434あなたはモジュールマップを意味していますか?ちょうどそれを試した。助けにならない。 –
もう一度やり直すことはできますが、明示的なモジュールはまったく使わないでください。 – user28434