来自Facebook SDK的无法识别的选择器发送到班级

时间:2018-11-02 03:20:55

标签: ios facebook

大约一年前,我将Facebook SDK安装到了我的iOS应用中,完全是出于广告跟踪的目的。我在应用程序中调用的唯一的SDK调用是它们告诉您放入应用程序委托中的三个。没有问题,我的应用程序运行正常(广告跟踪正常)。

最近,Facebook发了一封电子邮件,要求我更新SDK,所以我做到了。现在,我的应用程序在启动后崩溃了,并出现了字符串“无法识别的选择器发送给类”错误。

由于我没有Facebook的源代码,因此我无法调试它,不知道它来自何处,除了将SDK从我的应用程序中完全删除之外,没有其他实际选择,这将使我的营销人员非常高兴心烦意乱。

这是什么问题?有人找到修复程序了吗?

2 个答案:

答案 0 :(得分:5)

在“构建设置”中,您是否为“其他链接器标志”设置了-ObjC

那为我解决了这个问题。

此外,如果您不使用CocoaPods,则可以look at the podspec,并尝试确保已链接了必需的依赖项。

特别是:

  "ios": {
    "weak_frameworks": [
      "Accounts",
      "CoreLocation",
      "Social",
      "Security",
      "QuartzCore",
      "CoreGraphics",
      "UIKit",
      "Foundation",
      "AudioToolbox",
      "WebKit"
    ]
  },

答案 1 :(得分:0)

另请参见RN FBK SDK iOS issue 472RN Unity SDK issue 208报告类似的崩溃。

对我来说,添加 -ObjC 链接程序标志不足以防止崩溃。

我还必须包含 force_load 标志和 FBSDKLoginKit 框架的正确路径。

因此在XCode项目的 Build Settings 中的 Other Link Flags 中,我添加了:

-ObjC
-force_load
-${PROJECT_DIR}/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit

请注意,您使用 FBSDKCoreKit 框架的路径可能有所不同。

上面链接的Github问题中有更多有关导致崩溃的原因的详细信息。