我们能够测试具有 Objective-C 接口的 FB iOS SDK 11.x,但是否可以对 FB iOS SDK 15.x 进行相同的测试,因为它似乎只包含 Swift 接口
虽然技术上可行,但 Facebook iOS SDK 的最低目标版本从 v11 中的 iOS 9 提升到 v15 中的 iOS 12。您可能希望确保最低目标版本匹配。
此外,自 v13 以来,许多类型已从 Objective-C 转换为 Swift。因此,开发人员在使用某些 Facebook SDK 模块时可能需要使用模块化导入语句,以避免在 Objective-C 中遇到编译错误。
// When importing a framework in this form:
#import <FBSDKShareKit/FBSDKShareKit.h>
// You may be need to update to this form when unknown symbol warnings appear:
@import FBSDKShareKit;
来源 - https://github.com/facebook/facebook-ios-sdk/blob/main/CHANGELOG.md#swift-conversions
本质上,您在 Objective-C 实现中使用的 Swift 源将通过生成的称为“桥接”标头的标头来访问。例如,正确配置后,
FBSDKCoreKit
会生成一个 FBSDKCoreKit-Swift.h
,让您可以访问 Swift 实现。请注意,当模块被模块化导入指令(例如 @import FBSDKCoreKit
)引用时,会自动使用此桥接标头。如果您使用 Cocoapods,这就是正确的方法。
否则,如果您想手动构建和引用模块,Swift 文档提供了有关您想要实现的目标的指导:
要在与 Objective-C 代码相同的框架目标中导入一组 Swift 文件,请将 Xcode 为 Swift 代码生成的标头导入到要使用 Swift 代码的任何 Objective-C .m 文件中。
由于生成的标头是框架公共接口的一部分,因此只有标有 public 或 open 修饰符的声明才会出现在框架目标的生成标头中。 Objective-C 运行时可以访问使用Internal 修饰符标记并在继承自Objective-C 类的类中声明的方法和属性。但是,它们在编译时无法访问,并且不会出现在框架目标的生成标头中。
将 Swift 代码导入同一框架内的 Objective-C 中:
#import <ProductName/ProductModuleName-Swift.h>
来源 - https://developer.apple.com/documentation/swift/importing-swift-into-objective-c