从Facebook删除应用程序后,[FBSession dealloc]中的EXC_BAD_ACCESS

时间:2015-04-02 09:31:22

标签: ios objective-c facebook facebook-graph-api

我的应用使用Facebook分享和发布喜欢的内容。它工作正常,直到我通过设置从Facebook删除应用程序 - >的应用程序。

用例如下:我通过我的应用程序在Facebook上授权,进行任何社交操作,保持应用程序打开,从Facebook上的应用程序中删除应用程序,尝试做或者再次共享。

然后出现登录对话框,在50%的情况下,应用程序崩溃[FBSession dealloc](在线程1 上,如导航器中所示)。堆栈跟踪如下所示:

0x141718:  blx    0x850a90                  ; symbol stub for: objc_msgSend
0x14171c:  movw   r0, #0x5586
0x141720:  mov    r1, r5
0x141722:  movt   r0, #0x92
0x141726:  add    r0, pc
0x141728:  ldr    r0, [r0]
0x14172a:  ldr    r0, [r4, r0]
0x14172c:  blx    0x850a90                  ; symbol stub for: objc_msgSend
0x141730:  movw   r0, #0x557a <<< EXC_BAD_ACCESS

事实证明,崩溃前FBSession处于FBSessionClosed状态。我有一个预防措施,在打开新会话之前检查这个权限并清除旧会话,如下所示:

  FBSession* session = [FBSession activeSession];
  [session closeAndClearTokenInformation];
  [session close];
  [FBSession setActiveSession:nil];

然后我用以下方法打开一个新会话

[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions", @"user_likes"]
                                   defaultAudience:FBSessionDefaultAudienceFriends
                                        allowLoginUI:YES
                                   completionHandler: ... ]

发生了撞车事故。

有人能说出如何解决这个问题吗?

感谢。

延迟更新。 事实证明,我在代码中两次释放了一些NSString对象。所以问题不在于Facebook iOS客户端库。 在MRR周围安全,伙计们。

1 个答案:

答案 0 :(得分:0)

我建议您使用“仪器工具”检查一次,您将清楚地了解它为何以及在何处崩溃。