Stockfish Chess Engine 与 Swift 中的 iOS 项目集成

Stockfish Chess Engine Integration with iOS project in Swift

我正在尝试将 Stockfish Chess Engine 与用 Swift 编写的应用程序集成。 Stockfish iOS 源代码对所有人开放,但它是用 Objective-C 编写的,引擎是用 C++ 编写的。我对 objective-c 没有问题,但似乎无法理解它如何与 Swift 一起工作,这是否可能。 Stockfish 引擎没有文档,我很难理解它将如何在 Swift 应用程序中构建,尤其是当这是我第一次尝试类似的东西时。其他人向我建议我可以尝试使用 cocoapods 将引擎暴露给 swift 但我在这里有点迷路。如果有人对我有任何建议,那就太好了。感谢您的宝贵时间!

你真正想要的是 Swift Universal Chess Interface protocol 的实现,这样任何兼容的引擎都可以与 CocoaPods(或 Carthage,或 SPM,...)打包并放入任何合规的 Swift 应用程序。这可能就是那些建议您尝试使用 CocoaPods 的人的想法。

对于仅获取一些 Objective-C 代码与 Swift 链接的不那么雄心勃勃的任务,是的,这是绝对可能的,您需要所谓的 "Bridging Header" 来公开 Objective-C 代码为 Swift。完整的详细信息位于您可以下载到 iBooks 的免费书籍中:

Using Swift with Cocoa and Objective-C

此文档也在 Apple 上在线,here's a direct link 到直接相关的部分:

To import a set of Objective-C files in the same app target as your Swift code, you rely on an Objective-C bridging header to expose those files to Swift. Xcode offers to create this header file when you add a Swift file to an existing Objective-C app, or an Objective-C file to an existing Swift app...

这个过程一般 Just Works™。如果没有,请搜索 "bridging header",您应该会找到很多合适的讨论!