swift项目中swift和objective-C之间的双向通信

Posted

技术标签:

【中文标题】swift项目中swift和objective-C之间的双向通信【英文标题】:2-way communication between swift and objective-C in a swift project 【发布时间】:2016-03-02 11:49:01 【问题描述】:

我有一个 swift 项目,我在其中导入了一个 Objective-C 项目,并自动创建了桥接头。我正在尝试构建一个应用程序来预订门票。我将跨视图收集的所有数据存储在一个 swift 类对象中。

现在有很多教程在objective c 项目中使用swift 文件和在swift 项目中使用objective c 文件,但没有一个讨论两种方式的通信。

我想在目标 C 类中重用 swift 类中创建的对象。

我一直在使用 NSUserDefaults 进行 2 路通信。

【问题讨论】:

【参考方案1】:

没有必要使用NSUserDefaults 作为“桥梁”。 ObjC 可以直接访问 swift 类,如果它们是 NSObject 的子类。

打开 Xcode 目标构建设置,在搜索字段中输入 swift。查找Objective-C Generated Interface Header Name。通常,它会有一些Project-Swift.h。在 ObjC 代码中导入此标头,您的 swift 类和函数将在 ObjC 中可用。

更多信息可以在官方文档中找到: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

【讨论】:

如何在 Swift 和 Objective-C 之间使用对象,通过引用来来回共享数据,而不使用共享首选项。并感谢您的回答。

以上是关于swift项目中swift和objective-C之间的双向通信的主要内容,如果未能解决你的问题,请参考以下文章

无法在框架项目的 Objective-C 代码中导入 Swift 类

如何将 RxSwift 用于 Objective-C 和 Swift 项目?

在同一个项目中同时使用 Realm Swift 和 Realm Objective-C

将swift文件导入objective-c项目

在 Swift 和 Objective-C 项目中使用 CocoaPods

无法使用桥接头将 Objective-C 文件导入 Swift 项目