Facebook中的exc_bad_access sdk登录Xcode 8 beta

Lir*_*ivo 12 facebook exc-bad-access facebook-ios-sdk ios10 xcode8

最近我开始添加我的应用程序IOS 10功能,而我遇到了一个奇怪的错误:

当我在嵌入式浏览器中单击facebook本身的确认按钮时,通过浏览器使用facebook SDK进行身份验证时,应用程序崩溃了.

在此输入图像描述 不幸的是,这个bug没有提供信息,控制台没有告诉我任何关于它的信息,并且没有调用堆栈来查看发生此异常的位置.

用于演示此错误的两点导致:1.如果登录是通过系统帐户进行​​登录,但只有在浏览器中登录时才会出现此错误,如下图所示: 在此输入图像描述

(一旦我点击OK,就会发生异常)

  1. 当我通过Xcode 7.x运行我的应用程序时,错误不会发生.所以它可能与facebook SDK与新编译器的集成有关.

希望有人能够回答这个问题,或者想知道如何调试这种无信息的bug.提前谢谢,丽然.

adi*_*tri 32

我也遇到了这个问题.似乎UIApplication Delegate方法中的一个在iOS 9中被弃用,并且可能在iOS 10中被删除.

optional func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
Run Code Online (Sandbox Code Playgroud)

我用以下方法替换它:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(app,
                                                                     open: url,
                                                                     sourceApplication: options[.sourceApplication] as! String,
                                                                     annotation: options[.annotation])
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这应该是公认的答案. (5认同)
  • 非常感谢你!有趣的是,如果`AppDelegate`实现了旧的`open url`方法,应用程序会直接崩溃.删除它并实现新的解决方案对我来说. (2认同)

n3w*_*bie 1

我刚刚遇到了类似的事情,但不幸的是我没有时间去挖掘问题。但我找到了这个网站,它很好地解释了它的工作原理以及如何调试它:What Is EXC_BAD_ACCESS and How to Debug It

所以,这就是发生此错误的原因:

总之,当您遇到 EXC_BAD_ACCESS 时,这意味着您尝试将消息发送到无法执行该消息的内存块。

然而,在某些情况下,EXC_BAD_ACCESS 是由损坏的指针引起的。每当您的应用程序尝试取消引用损坏的指针时,内核都会抛出异常。

本文给出的解决方案之一是使用Zombie Objects

单击左上角的活动方案并选择编辑方案。

选择左侧的“运行”,然后打开顶部的“诊断”选项卡。要启用僵尸对象,请勾选标记为“启用僵尸对象”的复选框。如果您现在遇到 EXC_BAD_ACCESS,Xcode 控制台中的输出将使您更好地了解从哪里开始搜索。

它应该在日志中为您提供更多信息,以便您可以了解问题的根源是什么。顺便说一句,它对我不起作用。

另一个解决方案是使用分析Xcode 工具检查代码中可能存在问题的区域。按Shift-Cmd-B以便使用它,或者Product -> Analyze 它应该显示您必须在 Xcode 左侧面板上的问题导航器中检查的可能问题。单击该问题可显示 Xcode 可疑的代码块,但最终可能根本不是问题的一部分。

有关更多信息,请查看上面的链接,我只是总结了文章所说的内容。