ios - 有什么方法可以在 Objective C 文件中使用普通的 Swift 类?

标签 ios objective-c swift interop

这个问题不是关于桥接 header 之类的。我已经得到了所有的工作。我的问题具体是关于我需要对 Swift 类执行哪些操作才能使它们显示在 Obj-C 代码中。

以这个简单的类为例:

class MyClass {
    var value: String = ""
}

如果我的项目中有此类,它不会包含在自动生成的 MyProject-Swift.h 文件中。我的理解是,为了在 Objective-C 中使用 Swift 类,我的类需要派生自 Objective-C 知道的类。这是我开始怀疑实际需求的地方。

如果我的类派生自 UIViewController,那么没问题。但如果这只是一个模型对象,那么它就不会派生自任何东西。虽然完全可以轻松地使我的类从 NSObject 派生,并因此将其正确导入到 Obj-C 代码中,但从 NSObject 派生可能会导致其他问题。

所以如果我不想让我的类派生自 NSObject,我该怎么做才能让它对我的 Obj-C 文件可见?是否有我找不到的文档解释了如何执行此操作?

最佳答案

据我目前所知,只有继承自 NSObject 的 Swift 类才能声明为 @objc 并桥接到 Objective-C 项目中。

如果没有这种一致性/继承,您最终将失去 Objective-C 的一些关键功能,例如消息发送。

综上所述,Objective-C 类必须从父类继承,默认根类是 NSObject。您几乎肯定只想继承并使您的类(class)成为 PONSO。

关于ios - 有什么方法可以在 Objective C 文件中使用普通的 Swift 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328146/

相关文章:

ios - 在 Swift 4 中升级后未调用 textFieldShouldReturn

json - 如何将 DispatchSemaphore 与 Alamofire 和 SwiftyJSON 一起使用?

ios - Swift 2 - 定期从 slider 打印新值

ios - 如何检查 NSarray 中的字符串是否正在更改

Objective-c:变量范围

ios - UITabBarController 自定义按钮在移动到下一个 ViewController 时不会隐藏

ios - 从自定义 TableViewCell 中的 didSelectItemAt 自定义 CollectionViewCell 更改 View Controller

ios - NSOperation 层次结构,工作单元

ios - 从 namespace 生成 UUID?

IOS:使用 NSUserDefault 存储一个数组