iOS 的 FBSDK:"unrecognized selector sent to instance"

FBSDK for iOS: "unrecognized selector sent to instance"

集成 Facebook SDK 后,我在启动应用程序后立即收到以下错误: "unrecognized selector sent to instance"

我做了什么:

我使用 XCode 6 为 iOS 8.2 设置了一个简单的视图控制器应用程序,并将 Facebook iOS SDK 与 Cocoapods 集成。

我完成了 "Getting Started" 部分并将必要的代码放入 AppDelegate 并更改了 .plist-File。 当 运行 应用程序时,它立即停止并出现 "unrecognized selector"-错误。

我还尝试了 Facebook-SDK 中的示例应用程序 "Scrumptious",它运行良好。我将 Scrumptions 中的代码构建到我的应用程序中,并遇到了与之前相同的错误。下面我将 post 调用堆栈。

Facebook 建议将 -ObjC 切换到链接器标志以解决这些错误。但是这个 Flag 已经设置好了(我认为 cocoapods 已经设置好了)。

我能做什么?什么东西少了?

这是调用堆栈:

2015-04-09 15:58:40.949 myapp[65629:2910713] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x7fbd6b741140'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000103205a75 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000102e9ebb7 objc_exception_throw + 45
    2   CoreFoundation                      0x000000010320cd1d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00000001031649dc ___forwarding___ + 988
    4   CoreFoundation                      0x0000000103164578 _CF_forwarding_prep_0 + 120
    5   myapp                             0x0000000100993c66 __107+[FBSDKAppEventsUtility activityParametersDictionaryForEvent:implicitEventsOnly:shouldAccessAdvertisingID:]_block_invoke + 470
    6   libdispatch.dylib                   0x0000000104257614 _dispatch_client_callout + 8
    7   libdispatch.dylib                   0x0000000104243881 dispatch_once_f + 565
    8   myapp                             0x000000010099388a +[FBSDKAppEventsUtility activityParametersDictionaryForEvent:implicitEventsOnly:shouldAccessAdvertisingID:] + 1114
    9   myapp                             0x000000010099be4c +[FBSDKAppLinkUtility fetchDeferredAppLink:] + 780
    10  myapp                             0x0000000100974e6e -[AppDelegate applicationDidBecomeActive:] + 142
    11  UIKit                               0x0000000101bd3f96 -[UIApplication _stopDeactivatingForReason:] + 313
    12  UIKit                               0x0000000101be8ea2 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:] + 2648
    13  FrontBoardServices                  0x0000000105b33243 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
    14  CoreFoundation                      0x000000010313ac7c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    15  CoreFoundation                      0x00000001031309c5 __CFRunLoopDoBlocks + 341
    16  CoreFoundation                      0x0000000103130785 __CFRunLoopRun + 2389
    17  CoreFoundation                      0x000000010312fbc6 CFRunLoopRunSpecific + 470
    18  GraphicsServices                    0x0000000103b72a58 GSEventRunModal + 161
    19  UIKit                               0x0000000101bd9580 UIApplicationMain + 1282
    20  myapp                             0x00000001009753b3 main + 115
    21  libdyld.dylib                       0x000000010428c145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

看看你的 plist 文件。它必须包含 FacebookAppId、DisplayName 和 URL 方案。如果只有一个丢失,你会得到这样的错误。

这是我的应用程序之一,它可以与 Facebook 一起正常工作-API: