0

「Utils」と呼ばれる Swift フレームワークを使用する「Box」と呼ばれる Objective-C フレームワークがあります。どちらにも、開発中に使用する標準ターゲットと、開発が完了し、ユニバーサル フレームワークを構築する必要があるときに使用するカスタム ターゲットがあります。

Xcode 10.2/swift 4 まではすべてうまく機能し、「Box」と「Utils」の両方のユニバーサル フレームワークをコンパイルして、swift で記述されたテスト アプリで使用したり、他のフレームワーク内のフレームワークとして使用したりできました。

Xcode 10.2/swift 5 に切り替えると、少なくともすべてのターゲットに対して、「Box」から「Utils」のオブジェクトとメソッドを参照できなくなりました。

「Box」標準ターゲットと実際のデバイスを使用すると、フレームワークを構築してテスト アプリで実行できます。「Box」から「Utils」オブジェクト/メソッドをポイントしてクリックできるので、それらを参照できます。

「Box」標準ターゲットとシミュレーターを使用すると、フレームワークをビルドできず、次のようなエラーが発生します。

"No visible @interface for 'UIColor' declares the selector 'initWithHexString:'" -> initWithHexString is a method declared into an extension of UIColor inside "Utils" framework

"use of undeclared identifier 'StringUtils'" -> StringUtils is a class declared inside "Utils" framework

カスタム ターゲット (ユニバーサル フレームワークのビルドに使用されるクラシック スクリプトのターゲット) を使用して "Box" ユニバーサル フレームワークをビルドしようとした場合も同様です。

そのため、Xcode 10.2 以降、不明な理由で、一部のターゲットについて、「Box」から「Utils」フレームワークを参照できなくなりました。すべてのメソッドは @objc でマークされているため、問題はありません。

何が問題なのかについて何か考えはありますか?

他に役立つ情報を追加する必要があるかどうかはわかりません...

どうもありがとう!

更新:「Utils」フレームワークをオンザフライで作成された Swift フレームワークにインポートして、テストを実行しようとしました。そしてそれはうまくいくようです。そのため、Swift の「Utils」フレームワークを Objective-C の「Box」フレームワークにインポートしようとすると問題が発生するようです。

4

1 に答える 1

0

最終的には、Xcode の 10.2 の既知の問題 48635615 でした。

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes?language=objc

このフォーラムのスレッドから

https://forums.developer.apple.com/message/359642

私の問題を解決するこのスクリプトを見つけました

https://gist.github.com/Shehryar/0c29cce7eead9c724b4c16b018bab63f

于 2019-05-12T16:50:32.940 に答える