2012-08-12 21 views
5

ho un pulsante per condividere un'immagine e ogni volte lo scatto, ho questo messaggio nel registro, non capisco:facebook SDK per iOS: strano messaggio

2012-08 -12 19: 21: 30.511 AvisOcean [2239: 707] Un'istanza 0xe6b8fe0 della classe FBSessionManualTokenCachingStrategy è stata deallocata mentre gli osservatori del valore chiave erano ancora registrati con esso. Le informazioni di osservazione sono trapelate e potrebbero persino essere erroneamente associate ad altri oggetti. Impostare un punto di interruzione su NSKVODeallocateBreak per fermarsi qui nel debugger. Ecco l'attuale informazioni di osservazione: ( Contesto: 0xa5e90, Proprietà: 0x245310> Contesto: 0xa5e90, Proprietà: 0x28c400> )

Tutte le idee?

risposta

2

Avevo lo stesso problema. Penso che quello che è successo è che ho inizializzato Facebook altrove e mi ha dato degli errori quando ho provato a re-inizializzarlo e di nuovo a richiamare un delegato di dialogo da un'altra istanza.

L'istanza in cui stavo mantenendo l'inizializzazione e il token di accesso effettivi era diversa da quella che stava invocando la finestra di dialogo. Quando l'ho corretto dopo aver superato lo documentation, è stato risolto.

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

Se questo non è ARC, si dispone di una riserva supplementare su self.facebook. Devi allocare/init usando 'facebook = ...' o '_facebook = ...'. Usando self su una proprietà che è già stata mantenuta per allocare/init un oggetto, la mantiene due volte. – djibouti33

0

Vedo questo messaggio quando il mio oggetto di Facebook è deallocato. Sto usando l'SDK 3.0.8. Nel mio caso sto pensando che l'oggetto di Facebook dovrebbe rimuovere se stesso come un osservatore del suo tokenCaching prima di rilasciarlo nel suo dealloc. Il tuo caso potrebbe essere diverso poiché non sembra che tu stia cancellando l'oggetto FB. Forse i suggerimenti here aiuterebbero.

5

L'SDK di Facebook sta trapelando agli osservatori. Sto usando SDK v3.1.

Questo non dovrebbe essere un problema se si utilizza l'SDK senza le intestazioni deprecate (ad esempio Facebook.h). Ma per usare le finestre di dialogo native è necessario includere le intestazioni deprecate (fonte: https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/) che portano a questo errore quando si chiude/pulisce la sessione attiva.

Ecco una richiesta di pull per risolvere il problema: https://github.com/facebook/facebook-ios-sdk/pull/474

È possibile quindi ricostruire l'SDK utilizzando Facebook SDK for iOS6/Xcode 4.5 not working

+0

grazie per questa risposta. Sicuramente aiutato. Inoltre è stato in grado di disconnettere un altro fastidioso errore nell'SDK dell'FB costruendolo da solo. –

1

fare una rapida disconnessione prima di assegnare access token e ExpirationDate, che vi aiuterà a ripulire un errore brutto che tu l'avevi visto. Sono sicuro che questa è solo una soluzione temporanea per chi usa le intestazioni di Facebook deprecate.

// 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;