在ios Facebook SDK 3.0中登录时应用程序崩溃

时间:2012-09-06 13:49:55

标签: iphone objective-c ios facebook

我的应用使用Facebook身份验证。如果设备上没有安装Facebook应用程序,它可以正常工作,如果用户未登录Facebook应用程序,也适用于具有Facebook应用程序的设备。但是,如果用户已经登录到Facebook应用程序,我的应用程序会显示登录页面两三秒钟,然后通过说

崩溃
 -[SBJsonParser errorTrace]: unrecognized selector sent to instance 0x48ad90

崩溃日志显示异常类型:EXC_CRASH(SIGTRAP) 有人帮忙吗?

Stack Trace: (
    0   CoreFoundation                      0x37aae8d7 __exceptionPreprocess + 186
    1   libobjc.A.dylib                     0x315941e5 objc_exception_throw + 32
    2   CoreFoundation                      0x37ab1acb -[NSObject doesNotRecognizeSelector:] + 174
    3   CoreFoundation                      0x37ab0945 ___forwarding___ + 300
    4   CoreFoundation                      0x37a0b680 _CF_forwarding_prep_0 + 48
    5   MyFbApp                            0x0014bf83 -[SBJSON objectWithString:allowScalar:error:] + 118
    6   MyFbApp                            0x0014bffb -[SBJSON objectWithString:error:] + 26
    7   MyFbApp                            0x0015030b -[FBRequestConnection parseJSONOrOtherwise:error:] + 94
    8   MyFbApp                            0x0014ff19 -[FBRequestConnection parseJSONResponse:error:statusCode:] + 100
    9   MyFbApp                            0x0014fcbb -[FBRequestConnection completeWithResponse:data:orError:] + 566
    10  MyFbApp                            0x0014e08f __68-[FBRequestConnection startWithCacheIdentity:skipRoundtripIfCached:]_block_invoke_0 + 174
    11  MyFbApp                            0x00151acf -[FBURLConnection invokeHandler:error:response:responseData:] + 482
    12  MyFbApp                            0x0015202b -[FBURLConnection connectionDidFinishLoading:] + 298
    13  Foundation                          0x31a0ac39 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke_0 + 16
    14  Foundation                          0x319626e9 -[NSURLConnectionInternalConnection invokeForDelegate:] + 28
    15  Foundation                          0x319626b3 -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 198
    16  Foundation                          0x319625d5 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 60
    17  CFNetwork                           0x36f8f8a5 _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 192
    18  CFNetwork                           0x36f84545 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 424
    19  CFNetwork                           0x36f84243 _ZN19URLConnectionClient13processEventsEv + 106
    20  CFNetwork                           0x36f84179 _ZN17MultiplexerSource7performEv + 156
    21  CoreFoundation                      0x37a82b03 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
    22  CoreFoundation                      0x37a822cf __CFRunLoopDoSources0 + 214
    23  CoreFoundation                      0x37a81075 __CFRunLoopRun + 652
    24  CoreFoundation                      0x37a044dd CFRunLoopRunSpecific + 300
    25  CoreFoundation                      0x37a043a5 CFRunLoopRunInMode + 104
    26  GraphicsServices                    0x37582fcd GSEventRunModal + 156
    27  UIKit                               0x34e94743 UIApplicationMain + 1090
    28  MyFbApp                            0x0007512d main + 236
    29  MyFbApp                            0x0007503c start + 40
)

2 个答案:

答案 0 :(得分:13)

最后我通过添加

解决了我的问题
-(id) errorTrace{
    return [NSArray arrayWithObjects:@"error1", nil];
}
SBJsonParser中的

。我不知道它是如何运作的。

感谢上帝>>>>>>>>>>>

进一步参考http://developers.facebook.com/bugs/202230616574138/

答案 1 :(得分:2)

我不熟悉Facebook身份验证,但这里可能会发生两件事:

  • 要么将errorTrace:消息发送到已由SBJsonParser对象在内存中替换的已释放对象。
  • 或您向SBJsonParser对象
  • 发送了无效邮件

我建议两件事:

  1. 添加NSZombieEnabled标志以查看是否因错误解除了对象的分配
  2. 发布您正在使用SBJsonParser的代码,希望它不是在外部源代码或库中创建的