【问题标题】:facebook sdk crashes in application delegatefacebook sdk 在应用程序委托中崩溃
【发布时间】:2017-04-25 03:46:41
【问题描述】:

这是我复制错误的方法。所以这是我用于登录的代码:

@IBAction func FBLoginAction(_ sender: AnyObject) {
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.browser
    fbLoginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self) { (result, error) -> Void in
        if (error != nil) {
            return
        }
    }
 }

如果我登录两次,然后再次运行应用程序,此行会在 appdelegate 中崩溃。

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

如果我只登录一次,然后再次运行应用程序,则不会发生崩溃。崩溃的完整堆栈如下:

2016-12-09 10:51:28.893 持久性[73125:897290] -[NSConcreteMutableData isEqualToString:]:无法识别的选择器发送到实例 0x60000004ec40 2016-12-09 10:51:28.903 持久性 [73125:897290] *** 由于未捕获而终止应用程序 异常“NSInvalidArgumentException”,原因: '-[NSConcreteMutableData isEqualToString:]: 发送了无法识别的选择器 到实例 0x60000004ec40'

*** 第一次抛出调用堆栈:( 0 CoreFoundation 0x00000001085e634b exceptionPreprocess + 171 1 libobjc.A.dylib
0x0000000107c2a21e objc_exception_throw + 48 2 核心基础
0x0000000108655f34 -[NSObject(NSObject) 不识别选择器:] + 132 3 核心基础 0x000000010856bc15 ___forwarding_
+ 1013 4 CoreFoundation 0x000000010856b798 _CF_forwarding_prep_0 + 120 5 FBSDKCoreKit
0x000000010700aa5a -[FBSDKAccessTokenCacheV4 fetchAccessToken] + 202 6 FBSDKCoreKit 0x000000010700902c -[FBSDKAccessTokenCache fetchAccessToken] + 92 7 FBSDKCoreKit 0x0000000107017d2d -[FBSDKApplicationDelegate 应用程序:didFinishLaunchingWithOptions:] + 125 8 持久性
0x000000010572bcb7 _TFC11Persistence11AppDelegate11applicationfTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVs10DictionaryVSC29UIApplicationLaunchOptionsKeyP____Sb + 727 9 持久性 0x000000010572cfb4 _TToFC11Persistence11AppDelegate11applicationfTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVs10DictionaryVSC29UIApplicationLaunchOptionsKeyP____Sb + 180 10 UIKit 0x00000001091110be -[UIApplication_handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 290 11 UIKit 0x0000000109112a43 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4236 12 UIKit 0x0000000109118de9 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1731 13 UIKit 0x0000000109115f69 -[UIApplication workspaceDidEndTransaction:] + 188 14 FrontBoardServices 0x000000010d698723 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 24 15 FrontBoardServices 0x000000010d69859c -[FBSSerialQueue _performNext] + 189 16 FrontBoardServices 0x000000010d698925 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 17 核心基础 0x000000010858b311 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 18 核心基础 0x000000010857059c __CFRunLoopDoSources0 + 556 19 CoreFoundation 0x000000010856fa86 __CFRunLoopRun + 918 20 CoreFoundation
0x000000010856f494 CFRunLoopRunSpecific + 420 21 UIKit
0x00000001091147e6 -[UIApplication_run] + 434 22 UIKit
0x000000010911a964 UIApplicationMain + 159 23 持久性
0x000000010572d97f 主要 + 111 24 libdyld.dylib
0x000000010b3a368d 开始 + 1 ) libc++abi.dylib: 终止于 NSException 类型的未捕获异常

【问题讨论】:

    标签: ios swift facebook


    【解决方案1】:

    我恢复到 Facebook SDK 的 4.17.0 版,我不再遇到崩溃。

    【讨论】:

    • 我遇到了同样的崩溃。确认一下,崩溃的版本是 4.18.0?
    • 这太荒谬了。无论如何感谢您的解决方案,希望 Facebook 将发布一个最新的、基于 Swift 的、具有完整功能的 SDK……
    • 似乎已在 4.19.0 中修复
    【解决方案2】:

    如果您使用的是 4.18.0 版的 Facebook SDK,请将其更新到 4.19.0 或当前版本,您将不会遇到崩溃。

    【讨论】:

      【解决方案3】:

      确保您的 Podfile 中没有受限版本的 FBSDK,如下所示:

      pod 'FBSDKCoreKit'
      pod 'FBSDKLoginKit'
      pod 'FBSDKShareKit'
      

      然后执行pod update。不要使用--no-repo-update 来更新您的本地规格存储库。

      最新的本地规范存储库将让您能够下载最新版本的FBSDK,即4.19.0

      【讨论】:

        猜你喜欢
        • 2011-02-13
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多