Facebook iOS SDK日志:奇怪的信息

5
我有一个分享图片的按钮,每次点击它时,我都会在日志中看到这个信息,但我不理解:

2012-08-12 19:21:30.511 AvisOcean[2239:707] 当键值观察者仍然与FBSessionManualTokenCachingStrategy类的实例0xe6b8fe0关联时,该实例已被释放。 观察信息已经泄漏,可能会错误地附加到其他一些对象上。 在NSKVODeallocateBreak上设置断点以在调试器中停止。 这是当前的观察信息: ( Context: 0xa5e90, Property: 0x245310> Context: 0xa5e90, Property: 0x28c400> )

你有任何想法吗?
4个回答

5
Facebook SDK正在泄漏观察器。我使用的是SDK v3.1。
如果您使用不带有“Facebook.h”弃用头文件的SDK,则不应出现此问题。但是,要使用本机对话框,您需要包括弃用的头文件(来源:https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/),这会在关闭/清除活动会话时导致错误。
以下是修复此问题的拉取请求: https://github.com/facebook/facebook-ios-sdk/pull/474 然后您可以使用Facebook SDK for iOS6/Xcode 4.5 not working重新构建SDK。

感谢您的回答。绝对有所帮助。我还通过自己构建它,成功解决了FB SDK中的另一个麻烦错误。 - Piotr Tomasik

2
我遇到了同样的问题。我认为发生了什么是我在其他地方初始化了Facebook,在我试图重新初始化它并从不同实例调用对话委托时,它给我带来了错误。
我保留了实际应用程序初始化和访问令牌的实例与调用对话框的实例不同。当我在查看文档后纠正了这一点,问题得到了解决。请参考文档
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];

如果这是非ARC,那么self.facebook上会有一个额外的retain。你需要使用facebook=..._facebook=...进行alloc/init。在已经被retain的属性上使用self来alloc/init一个对象会导致它被retain两次。 - djibouti33

1
在分配accessToken和expirationDate之前,快速注销一下,这将有助于清理一些你所看到的令人讨厌的错误。我相信这只是对使用已弃用的Facebook头文件的人的临时解决方案。
// 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;

0

当我的Facebook对象被dealloc时,我看到了这个消息。我正在使用3.0.8 SDK。在我的情况下,我认为Facebook对象应该在释放之前将自己作为tokenCaching的观察者移除。你的情况可能不同,因为听起来你不会清除FB对象。也许这里的建议here会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接