facebook sdk在应用程序委托中崩溃

这是我如何复制错误。 所以这里是我login的代码:

@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 } } } 

如果我login两次,然后再次运行应用程序,这行崩溃在appdelegate。

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

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

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

***第一个抛出调用堆栈:(0 CoreFoundation 0x00000001085e634b exceptionPreprocess + 171 1 libobjc.A.dylib
0x0000000107c2a21e objc_exception_throw + 48 2 CoreFoundation
0x0000000108655f34 – [NSObject(NSObject)doesNotRecognizeSelector:] + 132 3 CoreFoundation 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 application: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:完成: ] + 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 CoreFoundation 0x000000010858b311 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 18 CoreFoundation 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 main + 111 24 libdyld.dylib
0x000000010b3a368d start + 1)libc ++ abi.dylib:以NSExceptiontypes的未捕获exception终止

我回到了Facebook SDK的版本4.17.0,我不再崩溃。

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

确保你的FBSDK没有限制版本的Podfile ,如下所示:

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

然后进行pod update 。 不要放一个--no-repo-update来让你的本地规格更新。

最新的本地规格库可让您下载最新版本的FBSDK ,即4.19.0