更改视图后iPhone Facebook Connect注销崩溃

更改视图后iPhone Facebook Connect注销崩溃,iphone,objective-c,facebook,Iphone,Objective C,Facebook,我已经在我的应用程序中实现了Facebook Connect,就像Facebook提供的示例应用程序一样,它运行良好。当用户选择通过Facebook共享数据后,他们会进入一个新的视图,并显示FB登录对话框。当用户完成后,他们退出FB共享视图并返回到我的应用程序的上一个视图。用户只要不注销,就保持登录状态-即使他们退出FB共享视图。这是好的,正如预期的那样 我使用与示例SessionViewController.m相同的viewDidLoad方法,这是初始化_会话的地方: - (void)view

我已经在我的应用程序中实现了Facebook Connect,就像Facebook提供的示例应用程序一样,它运行良好。当用户选择通过Facebook共享数据后,他们会进入一个新的视图,并显示FB登录对话框。当用户完成后,他们退出FB共享视图并返回到我的应用程序的上一个视图。用户只要不注销,就保持登录状态-即使他们退出FB共享视图。这是好的,正如预期的那样

我使用与示例SessionViewController.m相同的viewDidLoad方法,这是初始化_会话的地方:

- (void)viewDidLoad { 
    [_session resume];
    _loginButton.style = FBLoginButtonStyleWide;
}
但是我注意到,如果用户在退出并重新加载FB共享视图后按下注销按钮,它将抛出SIGABRT或EXC_BAD_访问并使应用程序崩溃。EXC_BAD_访问错误发生在登录按钮的touchUpInside方法的[dialog show]行:

- (void)touchUpInside {
  if (_session.isConnected) {
    [_session logout];
  } else {
    FBLoginDialog* dialog = [[[FBLoginDialog alloc] initWithSession:_session] autorelease];
    [dialog show];
  }
即使用户已连接,touchUpInside方法也会看到断开的会话。。。有时,按下注销按钮后不会崩溃,注销将成功,但视图的状态文本仍为“登录为…”,并且设置状态/上载图像按钮不会隐藏。再次尝试登录会抛出SIGABRT,这看起来是由于FBRequest中的nil_session.sessionKey。m:344:

[_params setObject:_session.sessionKey forKey:@"session_key"];
在视图更改中,我是否应该保留某些内容或以不同的方式执行

编辑:我在Facebook开发者论坛上发现另一个用户有同样的问题:


没有发布任何解决方案,但如果我找到了,我会更新这个问题。

\u会话此时为零,对不对(这与“始终显示未连接”一致)。您在哪里初始化会话

ETA:这是你的代码,它取代了Facebook Connect提供的SessionViewController,对吗

我不知道session是如何发布的,但看起来就是这样

添加:

您可能希望将按钮处理程序更改为

[_会议恢复]


然后在didLogin委托处理程序中执行您需要执行的任何操作。这样,U会话将为您实例化FBLoginDialog。

看起来您做的每件事都是正确的。能否在FBDialog类中设置断点(仅在每个函数上),并查看是否可以缩小崩溃的范围?是否将其导入FBDialog::show()方法?