Xcode 使用Facebook不推荐的标题时出现错误消息

Xcode 使用Facebook不推荐的标题时出现错误消息,xcode,facebook,memory-management,automatic-ref-counting,Xcode,Facebook,Memory Management,Automatic Ref Counting,我在Xcode 4.5中有一个集成Facebook的应用程序。我正在使用ARC。应用程序使用 本机对话框,因此不推荐使用标题(即Facebook.h)。显然,这样做会导致以下结果 关闭/清理活动会话时出错: “类的实例0xa089350 FBSessionManualTokenCachingStrategy已解除分配,而键值观察员仍在注册 观测信息被泄露,甚至可能被错误地连接到其他物体上。” 在研究这个错误后,我假设问题是当我在应用程序委托中初始化self.Facebook实例时,Faceboo

我在Xcode 4.5中有一个集成Facebook的应用程序。我正在使用ARC。应用程序使用 本机对话框,因此不推荐使用标题(即Facebook.h)。显然,这样做会导致以下结果 关闭/清理活动会话时出错:

“类的实例0xa089350 FBSessionManualTokenCachingStrategy已解除分配,而键值观察员仍在注册 观测信息被泄露,甚至可能被错误地连接到其他物体上。”

在研究这个错误后,我假设问题是当我在应用程序委托中初始化self.Facebook实例时,Facebook 添加两个观察者而不是一个,然后在注销期间只清理一个观察者。我已多次尝试删除这两个实例,包括关于此问题的所有解决方案 关于此错误的第页:

这些解决方案中没有一个对我有效,包括我看到的一个解决方案,它涉及到我不能使用的解除分配,因为我正在使用ARC。以下是我打开和关闭会话的代码,以供参考:

- (void)sessionStateChanged:(FBSession *)session
                  state:(FBSessionState) state
                  error:(NSError *)error
{
switch (state) {
    case FBSessionStateOpen:
        if (!error) {
            // We have a valid session

            // Initiate a Facebook instance

            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;

        }
        break;
    case FBSessionStateClosed:
    case FBSessionStateClosedLoginFailed:
        [FBSession.activeSession closeAndClearTokenInformation];
        // Clear out the Facebook instance
        self.facebook = nil;
        break;
    default:
        break;
}

[[NSNotificationCenter defaultCenter]
 postNotificationName:FBSessionStateChangedNotification
 object:session];

 if (error) {
    UIAlertView *alertView = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:error.localizedDescription
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
    [alertView show];
 }
}

/*
 * Opens a Facebook session and optionally shows the login UX.
 */

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI //do I need this method?
{
NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"user_about_me",
                        @"read_friendlists",
                        @"read_stream",
                        @"friends_likes",
                        @"user_likes",
                        @"friends_photos",
                        @"user_photos",
                        nil];

return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,    
                                                    FBSessionState state,
                                                         NSError *error) {
                                         [self sessionStateChanged:session state:state
                                                             error:error]; }];
}

/*
 * If we have a valid session at the time of openURL call, we handle
* Facebook transitions by passing the url argument to handleOpenURL
*/

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
// attempt to extract a token from the url
return [FBSession.activeSession handleOpenURL:url];
}

- (void) closeSession {
[FBSession.activeSession closeAndClearTokenInformation];
}
如果有人能就如何解决这一问题提供指导,我将不胜感激