Pods-Facebook-iOS-SDK:“selection”和“allowsMultiple”警告

Pods-Facebook-iOS-SDK: Warning for `selection` & `allowsMultiple`

具有 Cocoa-Pods 管理依赖项的 .xcworkspace returns 此警告:“Auto 属性 synthesis will not synthesize 属性 selection;它将由其超类实现,使用@dynamic 来确认意图” in FBFriendPickerViewController.h; FBPeoplePickerViewController.h 中的 allowsMultipleSelection 也是如此。

注释掉 @property (nonatomic, copy, readwrite) NSArray *selection; & @property (nonatomic) BOOL allowsMultipleSelection; 对 .xcworkspace 没有任何影响。目标构建没有问题。虽然警告很烦人。无论目标是什么,它都会在每次构建时弹出:

你有什么建议来处理这些警告?

如警告所示,一种选择是将 @dynamic selection; 添加到 FBFriendPickerViewController.m 中的实现,将 @dynamic allowsMultipleSelection; 添加到 FBPeoplePickerViewController.m 中的实现(您也可以使用#pragma 指令使警告静音,或者按照您的建议,完全注释掉多余的声明)。

当然,如果您使用的是 CocoaPods,那么 Facebook SDK 可能不受源代码控制,因此除非您将其添加到源代码控制,否则您的修复将是短暂的 - 但在这种情况下,您最好升级改为新的 4.2 SDK,它已被拆分为多个框架。在你的播客文件中替换 Facebook-iOS-SDK (~> 3.23.0)(或您拥有的任何版本)与 FBSDKCoreKit (~> 4.2)FBSDKLoginKit (~> 4.2)FBSDKShareKit (~> 4.2) 然后 运行 pod update。有很多 API 的变化,尽管其中大部分只是导入了三者的正确框架,并将 'FB' 前缀更改为 'FBSDK' - 但有些东西,例如登录 API 已完全更改(幸运的是,主要是简化了)。在升级指南中查看更多信息 here

*更新*

如果您不想升级 Facebook SDK,一个简单的解决方案是使用如下一行修改您的 podfile:

pod 'Facebook-iOS-SDK', '~> 3.23.0', :inhibit_warnings => true

Then 运行 pod update - 这将禁止仅来自该框架的所有警告。我通常不喜欢抑制警告,但由于这是相当良性的,并且根据您的使用情况,升级可能不是微不足道的,与成为 "warning blind" 相比,这可能是较小的危害,因为您只是习惯了总是有警告(例如,当出现一些不太良性的问题时,您不会注意到)。