2017-06-06 8 views
0

私は新しいフレームワークを構築しています。プロジェクトはSwift言語にコード化されますが、このフレームワークを使用するクライアントは、迅速またはObjective-Cフレームワークを自由に使用できます。 質問はどうすれば始めるのですか?そこSWIFTコードで構造体を使用してSwiftとObjective CプロジェクトのためのSwiftフレームワーク

  • のような数多くの問題かもしれないが、それは 客観Cフレームワークで使用可能にすることはできません。
  • optionalsは、私はスウィフトとObjective C用のファイルの異なるセットを書く 場合であっても、どのように私は同じプロジェクトの下で異なるフレームワークにそれらをマッピング ます
  • 客観Cが不足しています。
  • IntValue以外の列挙値は使用できません。
  • タプルは

が、私はこの周りにいくつかの質問が行われている知っているが、どれも任意の満足のいく答えを持っていない動作しないでしょう。

PS - チュートリアルやブログへのリンクがあまりにもスーパー参考になる

+0

enumの全機能を使用することはできません。 – Mozahler

+0

@Mozahler - あなたが正しいです、質問を更新しました –

答えて

1

私はこれをしなかったし、いくつかの予期しない結果を得た:私はトラブルスウィフトアプリケーションフレームワークを統合しています。 Objective-Cはうまく動作します。 ここでいくつかの注意点を述べました。

すべての機能を使用するObjective-Cでテストアプリケーションを作成しながら、これを繰り返し実行することをお勧めします。この方法で、SwiftからObjective-C境界までよく交差しない機能があれば、できるだけ早く発見されます。

問題点に関するご意見は、Objective-Cでオプションが見つからない場合がほとんどですが、変数とメソッドのパラメータにはnullable/nonnullの修飾子として表示されます。これはオプションを完全に置き換えるものではありませんが、プロセスの早い段階で問題を検出するのに役立ちます。

はスウィフトErrorとObjective-Cで使用NSError間のブリッジング:ここ

は、私が発見したいくつかの他の問題のランダムなリストです。変換がいつも滑らかになるわけではないので、エクスポートされたコードでNSErrorを使用することをお勧めします。

フレームワークでObjective-CとSwiftを混在させる場合、modulemapファイルをかなり大きく複雑にする傾向がある代わりに、ブリッジヘッダーを使用することはできません。

フレームワーク内にフレームワークを埋め込むことはできないため、アプリケーションがターゲットにALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESフラグを設定していることを確認する必要があります。これはドキュメントに明記されている必要があります。また、フレームワーク用のファットライブラリを作成する場合は、これらのファイルを分散SDKから削除する必要があります。

私が最初に言ったように、Swiftアプリケーションでは結果として得られる混合言語フレームワークを使用してもまだ成功していません。

希望すると、これはライブラリを開発する際に考慮すべき事項のリストに追加されます。

関連する問題