NSUserDefaults standardUserDefaults无法清除的问题

adi*_*dit 0 facebook objective-c nsuserdefaults ios facebook-ios-sdk

所以我用它NSUserDefaults来存储我的FBAccessTokenKeyFBExpirationDateKey.我正在创建一个单例用户对象:

- (id)init
{
    self = [super init];
    if (self != nil) {
         facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];

         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         if ([defaults objectForKey:@"FBAccessTokenKey"] 
            && [defaults objectForKey:@"FBExpirationDateKey"] ) {
            NSLog(@"ACCESS KEY IS NOT EMPTY");
            facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
            facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
         } else {
              NSLog(@"ACCESS KEY IS EMPTY");
         }


    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我还实现了一个在我注销时调用的didLogout方法:

- (void)fbDidLogout {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"FBAccessTokenKey"];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"FBExpirationDateKey"];
}
Run Code Online (Sandbox Code Playgroud)

这基本上清除/刷新了令牌密钥.现在真正的问题是,当我点击退出,退出应用程序,然后再次运行应用程序时,它会检测到该密钥FBAccessTokenKey并且FBExpirationDateKey仍然存在.为什么是这样?

dav*_*ode 7

你应该打电话:[[NSUserDefaults standardUserDefaults] synchronize]退出前