Iphone Facebook.m中的Facebook FBConnect fbDialogLogin方法在FBSessionLegate对象上点击EXC_BAD_访问

Iphone Facebook.m中的Facebook FBConnect fbDialogLogin方法在FBSessionLegate对象上点击EXC_BAD_访问,iphone,objective-c,ios,facebook,Iphone,Objective C,Ios,Facebook,使用facebook-facebook-ios-sdk-cf1c2c3,在将我的应用移动到后台之前,正在释放_sessionDelegate对象 这意味着,当应用程序在身份验证/授权回调后进入前台时,Facebook.m hits中的此方法会导致EXC_BAD_访问: - (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate 该方法中有问题的一行是: if ([self.sessionDe


使用facebook-facebook-ios-sdk-cf1c2c3,在将我的应用移动到后台之前,正在释放_sessionDelegate对象

这意味着,当应用程序在身份验证/授权回调后进入前台时,Facebook.m hits中的此方法会导致EXC_BAD_访问:

- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate
该方法中有问题的一行是:

  if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogin)]) {
    [_sessionDelegate fbDidLogin];
  }
我认为这是因为在Facebook.h中,sessionDelegate被分配而不是保留。因此,在某个时候,它被解除分配:

@property(nonatomic, assign) id<FBSessionDelegate> sessionDelegate;
@property(非原子,赋值)id sessionDelegate;
将其更改为保留似乎可以解决此问题:

@property(nonatomic, retain) id<FBSessionDelegate> sessionDelegate;
@property(非原子,保留)id sessionDelegate;
对我来说似乎太明显了。所以我一定错过了什么

有什么想法吗

非常感谢,,
xj

在这种情况下,将委托更改为retain方法可能是一种比其他方法更稳定的解决方案。但是,在您希望释放代理之前,您的代理正在被释放,您可能需要研究是什么导致它提前释放。但是,如果执行此操作,请确保编辑Facebook.m dealloc()方法以释放您的委托

我遇到了相同的EXC\u BAD\u访问问题。我通过删除其他已分配的rootViewController实例解决了此问题

RootViewController *rootViewController = [[RootViewController alloc] init];  <--------

facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:rootViewController];

RootViewController*RootViewController=[[RootViewController alloc]init] 在呼叫页面中,您必须禁用ARC

我想我感兴趣的是,Facebook iOS SDK的潜在问题是什么,或者我使用它的方式,导致了这种情况的发生?我应该编辑Facebook示例代码来修复这样一个明显的bug吗?可能是配置问题。