无法从 Objective-C 通用框架引用 类 和 Swift 通用框架的方法
Cannot reference classes and methods of a Swift universal framework from Objective-C universal framework
我有一个名为 "Box" 的 Objective-C 框架,它使用一个名为 "Utils" 的 Swift 框架。两者都有一个我在开发期间使用的标准目标,以及一个我在开发完成时使用的自定义目标,我需要构建一个通用框架。
直到 Xcode 10.2/swift 4 都运行良好,我能够编译 "Box" 和 "Utils" 通用框架并在编写的测试应用程序中使用它们在 swift 中,或作为其他框架内的框架。
切换到 Xcode 10.2/swift 5 我不能再从 "Box" 引用 "Utils" 的对象和方法,至少不是所有目标。
如果我使用 "Box" 标准目标和真实设备,我可以构建框架并将它们 运行 放入测试应用程序中。我可以从 "Box" 指向并单击 "Utils" objects/methods,这样我就可以引用它们。
如果我使用 "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" 框架时,这似乎是一个问题。
最后是 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
我有一个名为 "Box" 的 Objective-C 框架,它使用一个名为 "Utils" 的 Swift 框架。两者都有一个我在开发期间使用的标准目标,以及一个我在开发完成时使用的自定义目标,我需要构建一个通用框架。
直到 Xcode 10.2/swift 4 都运行良好,我能够编译 "Box" 和 "Utils" 通用框架并在编写的测试应用程序中使用它们在 swift 中,或作为其他框架内的框架。
切换到 Xcode 10.2/swift 5 我不能再从 "Box" 引用 "Utils" 的对象和方法,至少不是所有目标。
如果我使用 "Box" 标准目标和真实设备,我可以构建框架并将它们 运行 放入测试应用程序中。我可以从 "Box" 指向并单击 "Utils" objects/methods,这样我就可以引用它们。
如果我使用 "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" 框架时,这似乎是一个问题。
最后是 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