Xcode 使用Facebook不推荐的标题时出现错误消息
我在Xcode 4.5中有一个集成Facebook的应用程序。我正在使用ARC。应用程序使用 本机对话框,因此不推荐使用标题(即Facebook.h)。显然,这样做会导致以下结果 关闭/清理活动会话时出错: “类的实例0xa089350 FBSessionManualTokenCachingStrategy已解除分配,而键值观察员仍在注册 观测信息被泄露,甚至可能被错误地连接到其他物体上。” 在研究这个错误后,我假设问题是当我在应用程序委托中初始化self.Facebook实例时,Facebook 添加两个观察者而不是一个,然后在注销期间只清理一个观察者。我已多次尝试删除这两个实例,包括关于此问题的所有解决方案 关于此错误的第页: 这些解决方案中没有一个对我有效,包括我看到的一个解决方案,它涉及到我不能使用的解除分配,因为我正在使用ARC。以下是我打开和关闭会话的代码,以供参考: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
- (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];
}
如果有人能就如何解决这一问题提供指导,我将不胜感激