【问题标题】:Converting an Objective-C framework to Swift - Header files still displaying Objective-C functions将 Objective-C 框架转换为 Swift - 仍然显示 Objective-C 函数的头文件
【发布时间】:2018-10-05 06:54:21
【问题描述】:

我将整个Objective-C 框架转换为Swift。构建完成后,当我检查框架的头文件时,它仍然显示旧的Objective-c 函数。
我从框架项目中删除了所有Objective-C 文件。我已经尝试清理和构建项目。但没有成功。

【问题讨论】:

  • 您是否尝试删除 DerivedData 文件夹?

标签: ios objective-c swift ios-frameworks


【解决方案1】:

您从 Xcode 项目中删除了 Objective-C 文件,但您是否也从文件系统和您可能使用的任何源代码控制中删除了它们?

此外,您的 Xcode 项目中的构建设置可以搜索库/头文件,即使您已将它们从 Xcode 的 Project Navigator 中显式包含中删除。

只要确保搜索路径不查找旧的 Obj-C 内容即可。小心像MyXcodeProject/** 这样的递归搜索。 ** 将递归搜索所有子文件夹及其子文件夹以查找要包含的内容。

如果可以,最好直接在搜索路径中指定文件夹。如果您知道不需要搜索路径,则可以将它们全部清除。

...尽管您可能希望保留默认排除项:

【讨论】:

    【解决方案2】:

    请记住,您不能在 Objective-C 中子类化 Swift 类。 因此,你迁移的类不能有任何Objective-C 子类。

    一旦你将一个类迁移到 Swift,你必须移除对应的 在构建之前从目标中获取 .m 文件以避免重复符号 错误。

    要使 Swift 类在 Objective-C 中可用,请将其设为后代 Objective-C 类。

    按住 Command 键单击 Swift 类名称以查看其生成的标题。

    按住 Option 键单击一个符号以查看有关它的隐含信息,例如它的 类型、属性和文档 cmets。

    来自:https://developer.apple.com/documentation/swift/migrating_your_objective-c_code_to_swift

    另外,删除您的 DerivedData,进行干净的构建并重新启动 xCode。

    【讨论】:

      【解决方案3】:

      即使在删除 Obj C 文件后,您如何才能在基于 Swift 的框架中看到“头”文件。肯定有构建问题。如果构建是正确的,那么您在构建它之后就没有引用/使用正确的框架(在应用程序中)。这是我在许多开发人员中观察到的最常见的错误。

      【讨论】:

        【解决方案4】:

        也许这会有所帮助,请在您的框架的目标构建设置上尝试一下:

        • 禁用模块(启用模块(C 和 Objective-C))

        • 确保已设置 Swift 版本(Swift 语言版本)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-07
          • 2020-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-13
          • 2016-10-15
          相关资源
          最近更新 更多