2012-08-12 23 views
5

Tengo un botón para compartir una imagen y cada veces que haga clic en él, Tengo este mensaje en el registro, no entiendo:facebook SDK de iOS: extraño mensaje

2012-08 -12 19: 21: 30.511 AvisOcean [2239: 707] Se desasignó una instancia 0xe6b8fe0 de la clase FBSessionManualTokenCachingStrategy, mientras que los observadores de valores clave todavía estaban registrados con ella. La información de observación se filtró e incluso se puede unir erróneamente a algún otro objeto. Establezca un punto de interrupción en NSKVODeallocateBreak para detenerse aquí en el depurador. Aquí está la información observación actual: ( Contexto: 0xa5e90, propiedad: 0x245310> Contexto: 0xa5e90, propiedad: 0x28c400> )

¿Alguna idea?

Respuesta

2

Estaba teniendo el mismo problema. Creo que lo que sucedió es que había inicializado Facebook else donde y me estaba dando errores cuando intenté reinicializarlo e invocar nuevamente a un delegado de diálogo de una instancia diferente.

La instancia en la que estaba manteniendo la inicialización de la aplicación real y el acceso a la entrada era diferente de la que invocaba el cuadro de diálogo. Cuando corregí eso después de pasar el documentation, fue resuelto.

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

Si esto no es ARC, tiene un retener extra en self.facebook. Necesitas asignar/init usando 'facebook = ...' o '_facebook = ...'. Al usar self en una propiedad que ya está retenida para alloc/init, un objeto lo retiene dos veces. – djibouti33

0

Veo este mensaje cuando mi objeto de Facebook es desasignado. Estoy usando el SDK 3.0.8. En mi caso, estoy pensando que el objeto de Facebook debería eliminarse como observador de tokenCaching antes de liberarlo en su dealloc. Su caso puede ser diferente, ya que no parece que borre el objeto FB. Quizás las sugerencias here ayudarían.

5

El Facebook SDK tiene filtraciones de observadores. Estoy usando SDK v3.1.

Esto no debería ser un problema si está utilizando el SDK sin los encabezados obsoletos (es decir, Facebook.h). Pero para usar diálogos nativos, debe incluir los encabezados en desuso (fuente: https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/), lo que conduce a este error al cerrar/limpiar la sesión activa.

Aquí es una solicitud de extracción de solucionarlo: https://github.com/facebook/facebook-ios-sdk/pull/474

Luego, puede reconstruir el SDK usando Facebook SDK for iOS6/Xcode 4.5 not working

+0

gracias por esta respuesta. Definitivamente ayudado. También pude cerrar la sesión de otro error molesto en el FB SDK construyéndolo yo mismo. –

1

la sesión con rapidez antes de asignar accessToken y ExpirationDate, que le ayudará a limpiar algún error desagradable que tu habías visto Estoy seguro de que esta es solo una solución temporal para quienes usan encabezados de Facebook obsoletos.

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