【问题标题】:Can not reference (subclassed) Swift classes after set failed: failed after changed to BUILD_LIBRARY_FOR_DISTRIBUTION = YES设置失败后无法引用(子类化)Swift 类:更改为 BUILD_LIBRARY_FOR_DISTRIBUTION = YES 后失败
【发布时间】:2020-04-10 10:44:48
【问题描述】:

问题如题。

这里是重现步骤:

  1. 基于Objective-C创建项目
  2. 创建一个子类 UIViewController 的 Swift 类。它会自动创建一个桥接头。
  3. 通过在 Objective-C 文件的顶部添加“#import "FooProjectName-Swift.h" 来使用 Objective-C 项目中的 Swift 类(例如默认的 ViewController)。
  4. 设置BUILD_LIBRARY_FOR_DISTRIBUTION = YES(WWDC视频谈到this
  5. Xcode 将显示一个错误,建议我们删除桥接头
  6. 按照建议删除桥接头
  7. 不会引用 Swift 类,Xcode 显示错误

这里是示例项目,其中包含显示这些步骤的提交 https://github.com/allenlinli/BUILD_LIBRARY_FOR_DISTRIBUTION-Bug-When-Use-Swift

【问题讨论】:

  • 错误信息是什么?
  • 它是:“未知类型名称'TheViewController'”和“具有'保留(或强)'属性的属性必须是对象类型”
  • 这与BUILD_LIBRARY_FOR_DISTRIBUTION无关;你有语法错误。 ViewController.m 第 13 行引用了一个不存在的类型 TheViewController。我不清楚这里的正确声明是什么。
  • TheViewController在文件File.swift中声明,你可以通过搜索关键字TheViewController找到它。
  • 您需要桥接头。我不知道为什么有人建议你删除它,但我不明白没有它,Objective-C 怎么能看到类型的声明。

标签: ios objective-c swift frameworks xcframework


【解决方案1】:

发现我应该只为框架目标设置BUILD_LIBRARY_FOR_DISTRIBUTION = YES,而不是示例应用目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多