我的应用程序中有fbconnection它工作正常,但是当我注销并重新登录时;这是应用程序崩溃的地方。这是FBSession.m文件。我需要帮助这些谷歌搜索,但找不到任何有用的东西。有人理解或了解解决方案吗?感谢您的帮助。
- (BOOL)resume {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
FBUID uid = [[defaults objectForKey:@"FBUserId"] longLongValue];
if (uid) {
NSDate* expirationDate = [defaults objectForKey:@"FBSessionExpires"];
if (!expirationDate || [expirationDate timeIntervalSinceNow] > 0) {
_uid = uid;
_sessionKey = [[defaults stringForKey:@"FBSessionKey"] copy];
_sessionSecret = [[defaults stringForKey:@"FBSessionSecret"] copy];
_expirationDate = [expirationDate retain];
for (id<FBSessionDelegate> delegate in _delegates) {
[delegate session:self didLogin:_uid];// This is the place that gives EXC_BAD_ACCESS
}
return YES;
}
}
return NO;
}
编辑:
- (void) viewDidLoad {
[super viewDidLoad];
static NSString* kApiKey = @"605a4eee24bc4018210207cd152aaf0e";
static NSString* kApiSecret = @"4057291afc9430895461774a43881751";
_session = [[FBSession sessionForApplication:kApiKey secret:kApiSecret delegate:self] retain];
// Load a previous session from disk if available. Note this will call session:didLogin if a valid session exists.
[_session resume];
NSLog(@"resume");
}
这是我设置代表的地方
答案 0 :(得分:0)
您正在将会话的委托设置为正在释放的对象。 (如果你向我们展示你设置委托的地方附近的代码,我们可以看看究竟出了什么问题。)
答案 1 :(得分:0)
搜索您的项目并查找您要放入代理的所有文件。从所有这些文件的dealloc方法中,将它们从_delegates中删除。
很可能它崩溃了,因为你的委托对象(可能是之前弹出的viewController)被释放,_delegates数组包含一个指向它的悬挂指针。