【问题标题】:swift init is unavailable. init not available can only be created by the framework internalswift init 不可用。 init 不可用只能由框架内部创建
【发布时间】:2023-03-27 04:44:01
【问题描述】:

我正在尝试初始化内部框架的类(ObjC 版本)的实例:

MyClass *tmp = [Myclass New]; // <-- this works great

但我正在快速尝试类似的东西:

var tmp = Myclass()

但在 swift 的情况下,我得到了这个错误:

swift init 不可用。 init not available 只能由框架内部创建

为什么在 ObjC 上没有收到错误,为什么在 Swift 上我收到此错误?

非常感谢您的帮助。

【问题讨论】:

  • 你所指的类存储在哪里?
  • 你可以在 ObjC 上的任何类中做到这一点。 NSArray *array = [NSArray 新]。特别是该类是一个内部框架
  • 是什么让你的框架“内部化”?创建MyClass 实例的Objective-C 代码在哪里?是在框架里吗?在使用框架的应用程序中?别的地方?关于尝试创建实例的 Swift 代码的相同问题。

标签: objective-c swift


【解决方案1】:

如果您出于某种原因确实需要从 swift 访问对象。您可以尝试编写一个方法,在 Objective-C 中返回该对象的新版本,并通过桥接头使其可用于 swift。

但是,任何其他在 Objective-C 中私有的方法都不能在 swift 中访问。因此,您可能已经在 Objective-C 中封装了额外的方法,并使其可以与其他桥接的 Objective-C 方法一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2014-12-21
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多