2011-07-21 381 views
0
 NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 

     NSArray *cookies = [storage cookiesForURL:[NSURL URLWithString:@"http://www.facebook.com/"]]; 
     NSLog(@"old cookies!: %@",cookies); 
     NSHTTPCookie *cookie; 
     for (cookie in [storage cookies]) { 
      [storage deleteCookie:cookie]; 
     } 
     NSLog(@"new cookies!: %@",cookies); 

我想在註銷功能中刪除facebook cookie,但沒有刪除cookie。我不懂爲什麼。任何幫助將不勝感激。不刪除cookie(iphone)

+0

哎呦解決了我自己的問題:它不會刪除cookie,它會從NSHTTPCookieStorage中刪除它,所以如果您再次調用 cookies = [storage cookiesForURL:[NSURL URLWithString:@「http://www.facebook.com /「]]; 那麼它會工作 – James

+0

不工作! :( –

+0

請您詳細說明您的解決方案,因爲我有與facebook cookies相同的問題。當我註銷時,刪除所有的cookie,然後重新啓動應用程序,它仍記得所有的cookie,因此保留登錄信息。 – TheBestBigAl

回答

0

如果你想你的NSHTTPCookieStorage變化得以保留,你還需要修改cookie存儲後standardUserDefaults同步:

[[NSUserDefaults standardUserDefaults] synchronize]; 

爲了防止這種情況減慢你的應用程序,你可能還需要像這樣調用這個後臺線程:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); 

dispatch_async(backgroundQueue, ^{ 
    //TODO: Cookie deletion logic here 
}); 

編輯:

如果你只需要完全無視餅乾對於一個給定NSURLRequest,你可以這樣做:

[request setHTTPShouldHandleCookies:NO]; 

其中請求是您的NSURLRequest的實例。