2012-02-27 34 views
1

簡單的問題,如果有人可以回答,那將是太棒了。在每個應用程序啓動時使UIWebView像新的一樣

我有一個簡單的UIWebView用於登錄到某個服務。但是,當我重新加載應用程序時,它會保持登錄狀態。我需要做的就是每次應用程序啓動時都像新建一樣創建UIWebView。我不確定在界面構建器中是否有某個選項,或者某種方法可以放在應用程序終止時調用的方法中,以便它釋放WebView或其他東西。

回答

4

你需要做的是不保存UIwebView的緩存。您可以使用以下簡單代碼執行此操作:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 

將代碼放在UIwebview代碼中。

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

編輯:

還是在ApplicationDidFinishLoad(或類似的東西,哈哈),你可以刪除緩存

你問意見的東西。你可以不喜歡下面的代碼:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]]; 

     UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.f, 0.f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20.f)]; 
     [webView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)]; 

//No Cache\\ 

     NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
     [NSURLCache setSharedURLCache:sharedCache]; 

//No Cache\\ 

     webView.delegate = self; 
     [webView loadRequest:request]; 
     [self.view addSubview:webView]; 

好吧,

從一個UIWebView

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) { 

    if([[cookie domain] isEqualToString:someNSStringUrlDomain]) { 

     [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; 
    } 
} 

好運刪除特定請求

[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest]; 

或刪除人餅乾, Nathan

+0

我只有一個問題。你說「放置在webview代碼中」,但你在哪裏具體談論?防爆。 viewDidLoad – JTApps 2012-02-27 02:08:24

+0

@JTApps我編輯了我的消息,希望它能幫助你。 – Nathan 2012-02-27 02:14:16

+0

太棒了。謝謝= D – JTApps 2012-02-27 02:15:40

1

我的答案將在多個部分涵蓋多個基地。

1 - 這是可能的應用程序有一個cookie發佈新的應用的舊Cookie保持與登錄信息,因此,你仍然會在

殺餅乾登錄時爲用戶設置這樣就算了,在UIWebView的負載(即在viewwillload或其他方式)前嘗試這種

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [storage cookies]) { 
    [storage deleteCookie:cookie]; 
} 

2 - 這是一個多線程的手機(iOS4的或更新的版本在3GS或更新版本)上?你確定該應用程序正在終止,而不是隻是背景?如果是這種情況,並且您剛剛啓動之前的應用程序(您仍在登錄),則需要掛鉤 - (void)applicationDidBecomeActive:(UIApplication *)應用程序,並刪除舊的Web視圖並添加一個新的。

相關問題