0

我有一个名为“Box”的 Objective-C 框架,它使用一个名为“Utils”的 Swift 框架。两者都有一个我在开发过程中使用的标准目标,以及一个我在开发完成时使用的自定义目标,我需要构建一个通用框架。

直到 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 回答