Освободить память / cookie / кэш из UIWebView после закрытия - PullRequest
1 голос
/ 25 февраля 2012

У меня есть UIViewController, который содержит UIWebView.

. Я захожу на веб-сайт, скажем, через Facebook, используя UIWebview в UIViewController, затем я нажимаю «Готово», которое закрывает контроллер представления, который япредположим, выпустит контроллер представления.но когда я снова открываю UIWebview (не выходя из приложения, а также даже после завершения работы приложения), веб-страница все равно входит в Facebook после загрузки веб-представления.Как мне отключить веб-представление, чтобы каждый раз, когда я нажимал «Готово» и возвращался к веб-представлению, веб-представление всегда будет похоже на «совершенно новый», не входя на какой-либо веб-сайт, на который я ранее заходил.

- (void)viewDidLoad{
       NSLog(@"webView viewDidLoad called");
       appDelegate = (LoginDBAppDelegate *)[[UIApplication sharedApplication] delegate];
       loginObj = [appDelegate.loginArray objectAtIndex:currentSelectedRow];

       myWebView.delegate = self;
        [super viewDidLoad];
        [self showWebView]; 

}

-(void)showWebView{
    NSLog(@"webView showWebView called");

    NSURL *url = [NSURL URLWithString:loginObj.loginURL];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];


    [myWebView loadRequest:request];
}


-(IBAction)done_Clicked:(id)sender{
    NSLog(@"webView Done_Clicked");

    //dismiss the controller
    [self.navigationController dismissModalViewControllerAnimated:YES];

}

-(void)dealloc{
        [myWebView release];
        myWebView.delegate = nil;
        [activity release];
        [urlTextField release];
        [super dealloc];
}

Я пробовал это, но это не сработало:

-(IBAction)done_Clicked:(id)sender{
NSLog(@"webView Done_Clicked");

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[myWebView stringByEvaluatingJavaScriptFromString:@"var body=document.getElementsByTagName('body')[0];body.style.backgroundColor=(body.style.backgroundColor=='')?'white':'';"];
[myWebView stringByEvaluatingJavaScriptFromString:@"document.open();document.close()"];

//dismiss the controller
[self.navigationController dismissModalViewControllerAnimated:YES];

}

Я тоже пытался без успеха:

- (void) viewDidDisappear:(BOOL)animated {

NSLog(@"webView viewDidDisappear called");
[super viewDidDisappear:animated];

[self.myWebView removeFromSuperview];
self.myWebView.delegate = nil;
self.myWebView = nil;
[myWebView release];
}

1 Ответ

2 голосов
/ 05 марта 2012

Получил ответ от кого-то на форуме, поэтому поверьте ему ...

Поместите этот код в viewDidLoad

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

//Clear All Cookies
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

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

    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...