2012-08-12 22 views
5

Mam przycisk, aby podzielić się co razy kliknę to obraz i, mam ten komunikat w dzienniku, ja nie rozumiem:facebook iOS SDK: dziwny komunikat

2012-08 -12 19: 21: 30.511 AvisOcean [2239: 707] Instancja 0xe6b8fe0 klasy FBSessionManualTokenCachingStrategy została zwolniona, podczas gdy obserwatorzy wartości klucza nadal byli z nią rejestrowani. Informacje o obserwacjach wyciekły, a nawet mogły się pomylić z innym obiektem. Ustaw punkt przerwania w NSKVODeallocateBreak, aby zatrzymać się tutaj w debugerze. Oto obecny informacji obserwacja: ( Kontekst: 0xa5e90, Własność: 0x245310> Kontekst: 0xa5e90, Własność: 0x28c400> )

Jakieś pomysły?

Odpowiedz

2

Miałem ten sam problem. Myślę, że to, co się wydarzyło, to że zainicjowałem Facebooka gdziekolwiek i to dawało mi błędy, gdy próbowałem ponownie zainicjować to i ponownie wywoływać delegata okna dialogowego z innej instancji.

Instancja, w której zachowywałam rzeczywistą inicjalizację aplikacji i wartość przedostatnią, różniła się od instancji wywołującej okno dialogowe. Kiedy poprawiłem to po przejściu przez documentation, zostało to rozwiązane.

if (nil == self.facebook) { 
    self.facebook = [[Facebook alloc] 
        initWithAppId:FBSession.activeSession.appID 
        andDelegate:nil]; 

    // Store the Facebook session information 
    self.facebook.accessToken = FBSession.activeSession.accessToken;  
    self.facebook.expirationDate = FBSession.activeSession.expirationDate; 
} 

[self.facebook dialog:@"feed" andParams:params andDelegate:self]; 
+0

Jeśli nie jest to ARC, masz dodatkową rezerwę na self.facebook. Musisz przydzielić/zainicjować używając 'facebook = ...' lub '_facebook = ...'. Użycie self na właściwości, która jest już zatrzymana, aby przydzielić/zainicjować obiekt, zachowuje ją dwukrotnie. – djibouti33

0

Widzę tę wiadomość, gdy mój obiekt na Facebooku jest dealloc'ed. Używam pakietu SDK 3.0.8. W moim przypadku myślę, że obiekt Facebooka powinien usunąć się jako obserwator swojego tokenCaching przed zwolnieniem go w jego dealloc. Twoja sprawa może być inna, ponieważ nie brzmi tak, jakbyś chciał wyczyścić obiekt FB. Być może pomocne będą sugestie: here.

5

Zestaw SDK Facebooka przecieka obserwatorów. Używam SDK v3.1.

Nie powinno to być problemem, jeśli używasz zestawu SDK bez przestarzałych nagłówków (np. Facebook.h). Ale aby użyć natywnych okien dialogowych, musisz uwzględnić przestarzałe nagłówki (źródło: https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/), które prowadzi do tego błędu podczas zamykania/czyszczenia aktywnej sesji.

Oto wniosek wyciągnąć go naprawić: https://github.com/facebook/facebook-ios-sdk/pull/474

Następnie można odbudować SDK używając Facebook SDK for iOS6/Xcode 4.5 not working

+0

dzięki za tę odpowiedź. Zdecydowanie pomogło. Był również w stanie wylogować się z kolejnego brzydkiego błędu w SDK FB, budując go sam. –

1

Czy szybkie wylogowania przed przypisaniem accessToken i ExpirationDate, które pomogą oczyścić rzęsiste błąd, który widziałeś. Jestem pewien, że to tylko tymczasowe rozwiązanie dla osób używających wycofanych nagłówków Facebooka.

// Initiate a Facebook instance 
if(!_facebook) 
    _facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil]; 

// Store the Facebook session information 
[_facebook logout]; 
_facebook.accessToken = FBSession.activeSession.accessToken; 
_facebook.expirationDate = FBSession.activeSession.expirationDate; 
Powiązane problemy