使用Objective C将Facebook SDK 15.x与iOS集成是否可行

xe55xuns  于 2022-12-01  发布在  iOS
关注(0)|答案(1)|浏览(275)

bounty将在6天后过期。回答此问题可获得+100的声望奖励。user352290正在寻找来自知名来源的答案

我们能够测试具有Objective-C接口的FB iOS SDK 11.x,但是否可以对FB iOS SDK 15.x进行同样的测试,因为它似乎只包含Swift接口
我们能够测试具有Objective-C接口的FB iOS SDK 11.x,但是否可以对FB iOS SDK 15.x进行同样的测试

wooyq4lh

wooyq4lh1#

虽然技术上可行,但Facebook iOS SDK的最低目标版本已从iOS 9(v11)提升至iOS 12(v15)。您可能需要确保您的最低目标版本匹配。
此外,自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文档提供了关于你要实现的目标的指导:
要将一组Swift文件导入到与Objective-C代码相同的框架目标中,请将Xcode为Swift代码生成的头文件导入到任何要使用Swift代码的Objective-C .m文件中。
因为生成的头文件是框架公共接口的一部分,所以只有用public或open修饰符标记的声明才会出现在框架目标的生成头文件中。用internal修饰符标记的方法和属性,以及在继承Objective-C类的类中声明的方法和属性,都可以被Objective-C运行时访问。但是,它们在编译时是不可访问的,并且不会出现在为框架目标生成的头文件中。
将Swift代码导入同一框架内的Objective-C:
1.在“建置设定”下的“封装”中,确定该架构目的的“定义模块”设定已设为“是”。
1.使用以下语法将Swift代码从该框架目标导入该目标内的任何Objective-C .m文件,并替换相应的名称:
1.使用桥接信头#import <ProductName/ProductModuleName-Swift.h>汇入
来源-https://developer.apple.com/documentation/swift/importing-swift-into-objective-c

相关问题