【发布时间】:2015-09-01 09:24:45
【问题描述】:
我们可以很容易地使用Objective-C with C++ in Qt。
看过许多 Apple 的 WWDC 2015 演讲后,我预计 Swift 将取代 Objective-C 用于 OS X(和 iOS)开发;所有的演示都使用了 Swift。
考虑到您可以同时使用 Objective-C 和 Swift 以及桥接头,是否可以在 Qt 项目中编译 Swift 代码并使用 C++ 访问 Swift 的第一类对象(类、结构、枚举等)?
如果可以的话……
从 Qt 调用 Objective-C 函数需要将代码包装在 C 函数中,并带有要从 Qt 调用的 C 标头。
从 Objective-C 调用 Swift 需要一个桥接头来表示哪些 Swift 文件可用。然后在 XCode 项目中引用此标头;我们可以在 Qt .pro 中执行此操作吗?如果可以,如何操作?
假设我们可以指定桥接头,我们仍然只能从 Objective-C 文件中调用 Swift,但是可以直接从 Qt 中调用 Swift,在 C++ 中吗?
【问题讨论】:
-
理论上可以使用桥接头。你已经尝试过什么?
-
@JAL,但理论上和实践上是否可行?据我所知,Swift 只与 Objective-C 有直接关系,而不是 C++
-
好吧,您需要为 Qt C++ 代码创建一个 C 或 Objective-C 包装器。见:stackoverflow.com/questions/24042774/…
-
@JAL,这将允许从 Swift 调用 C++,但对于 Qt,我们希望它反过来 - 从 C++ 调用 Swift 代码,例如,可以创建一个 Swift做一些不同的事情的类,例如send a NSNotification through the notification centre。在此示例中,MyNotification::Display 的主体将使用 Swift 表示法而不是 Objective-c 编写,或者只是从 .swift 文件中的类中调用 Swift 方法。