Приложение Facebook разрывает соединение - PullRequest
1 голос
/ 22 августа 2011

У меня есть fbconnection в моем приложении, оно работает нормально, но когда я выхожу и перехожу;это место, где происходит сбой приложения.Это файл FBSession.m.Мне нужна помощь с этим, я ищу его в Google, но не могу найти ничего полезного.Кто-нибудь понимает или знает решение? Спасибо за помощь.

- (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");
}

это место, которое я назначил делегатом

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

Поиск в вашем проекте и поиск всех файлов, которые вы помещаете в делегаты. Из всех методов dealloc этого файла удалите их из _delegates.

Скорее всего, это сбой, потому что ваш объект делегата (который мог быть viewController, который был извлечен ранее) освобожден, и массив _delegates содержит висячий указатель на него.

0 голосов
/ 22 августа 2011

Где-то вы устанавливаете делегата сеанса для объекта, который освобождается.(Если вы покажете нам код рядом с тем местом, где вы установили делегата, мы сможем понять, что именно не так.)

...