我正在为我的应用登录Facebook,并以我的应用的设置形式注销方案。当我点击退出按钮时,我正在执行以下步骤,并且工作正常。 1)清除活动会话 2)关闭活动会话 3)删除存储在NSuserdefault中的用户令牌。
现在我必须在注销后再次启动Facebook登录表单。这工作正常。 现在出现问题,在启动facebook登录表单之前,我是否需要删除之前访问过的所有视图控制器?我没有在我的应用程序中使用导航控制器,并且所有呈现和解除视图控制器都是手动处理的。当我从一个视图控制器转到另一个视图控制器时,如果我不需要它们,我就会解雇几个视图控制器,当我回到之前的视图控制器时,很少我不会因为我需要它而解雇。当用户退出时,我将启动Facebook登录表单。但是仍然在内存中的视图控制器怎么样?我是否也需要照顾这种情况?如果我必须自己处理它,那么如何处理呢?
我正在从注销按钮启动Facebook登录视图控制器,如下所示。
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==0)
{
[FBSession.activeSession closeAndClearTokenInformation];
[FBSession.activeSession close];
[FBSession setActiveSession:nil];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"UserId"];
[[NSUserDefaults standardUserDefaults] synchronize];
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
FbLoginViewController *frm_athenticate = (FbLoginViewController *) [sb instantiateViewControllerWithIdentifier:@"autenticate"];
[self dismissViewControllerAnimated:YES completion: nil];
MyAppDelegate * appsDelegate =(MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[appsDelegate.window setRootViewController:nil];
[appsDelegate.window setRootViewController:frm_athenticate];
}
}
答案 0 :(得分:0)
当您执行注销方案时,您可能会转到登录页面。应取消分配所有inapp控制器(登录页面除外)以防止此时内存泄漏。您可以通过向所有控制器添加dealloc
方法来检查它,并在注销时对其进行NSLog检查。如果其中一些还活着,那么你必须直接解除分配。