5

画像を共有するためのボタンがあり、それをクリックするたびに、ログに次のメッセージが表示されます。理解できません:

2012-08-12 19:21:30.511 AvisOcean[2239:707] クラス FBSessionManualTokenCachingStrategy のインスタンス 0xe6b8fe0 の割り当てが解除されましたが、キー値オブザーバーがまだ登録されていました。観測情報が漏洩し、他の天体に誤って付着する可能性さえあります。NSKVODeallocateBreak にブレークポイントを設定して、デバッガーでここで停止します。現在の観測情報は次のとおりです: (コンテキスト: 0xa5e90、プロパティ: 0x245310> コンテキスト: 0xa5e90、プロパティ: 0x28c400> )

何か案は?

4

4 に答える 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を使用して SDK を再構築できません。

于 2012-09-29T15:32:01.287 に答える
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];
于 2012-09-20T18:17:42.263 に答える
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;
于 2012-10-05T16:44:44.547 に答える
0

Facebookオブジェクトの割り当てが解除されると、このメッセージが表示されます。3.0.8SDKを使用しています。私の場合、Facebookオブジェクトは、deallocでリリースする前に、tokenCachingのオブザーバーとして自分自身を削除する必要があると考えています。FBオブジェクトをクリアしているようには聞こえないため、ケースが異なる場合があります。おそらく、ここでの提案が役立つでしょう。

于 2012-09-10T16:36:18.677 に答える