2014-04-25 2 views
1

웹보기를 열 때 메모리가 100M으로 점프합니다. 웹보기를 닫고 모든 캐시를 제거 할 때 잠시 무시하면 메모리는 절대로 원래 위치로 내려 가지 않고 10M 만 감소합니다. 나는 새로운 앱을 시작하려고 노력했다. 깨끗하고, 나는 그것을 체크했고, 여전히 발생한다. 간단한 웹보기를 설정할 수 없습니다. 메모리가 영구히 유지되기 때문입니다.ios7에서 webView를 사용하는 심각한 버그

NSURL *websiteUrl = [NSURL URLWithString:[Globals sharedGlobals].currentLink]; 
    urlRequest = [NSURLRequest requestWithURL:websiteUrl cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10]; 
    [self.webView setDelegate:self]; 
    self.webView.scalesPageToFit = YES; 
    [self.webView loadRequest:urlRequest]; 

보십시오을 재현하기 위해, 당신은 같은를 얻을 것이다 : URL을로드

 [self.webView loadHTMLString: @"" baseURL: nil]; //tried with/without it 


[[NSURLCache sharedURLCache] removeCachedResponseForRequest:urlRequest]; 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 
[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
    NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
    [NSURLCache setSharedURLCache:sharedCache]; 

urlRequest=nil; 

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) 
    if([[cookie domain] isEqualToString:[Globals sharedGlobals].currentLink]) 
     [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; 

    [self.webView removeFromSuperview]; 
    [self.view removeFromSuperview]; 

:

캐시를 삭제하기 전에 웹보기를 제거합니다. 메모리가 올라가고 내려 가지 않습니다.

+1

여기 있습니다. 귀하의 질문에 충분히 소리 것, 그리고 downvote 공정하다고 생각하지 않았다. 그뿐만 아니라 현재 당신이 싫어하는 것과 비슷한 문제가 있습니다. 그러나 사람들은 자신이 좋아하는 방식으로 투표 할 것이고, 그것에 대해 할 수있는 일은 아무것도 없기 때문에 때때로 그렇게 실망하게됩니다. – trudyscousin

+0

@trudyscousin, 당신은 그 문제를 해결할 수 있습니까? 나는 6 시간을 보냈고 모든 정보를 읽었다. 결과가 없습니다. – Curnelious

+0

메모리가 증가 할뿐만 아니라 캐시를 비울 때 충돌이 발생합니다. 그래, 난 아직도 내 일을하고있어 ... – trudyscousin

답변

0

이것은 버그가 아니며 의도 된 동작입니다. 처음으로 UIWebView 개체를 뷰 계층 구조에 추가하면 전체 WebKit 스택이 메모리에로드되어이 스파이크가 원인이됩니다. WebKit 스택은 뷰 계층 구조에서 웹보기를 제거하고 다시 표시하지 않더라도 메모리에로드 된 상태로 유지됩니다. 웹킷 스택이 너무 크기 때문에 필요시에만로드됩니다.

UIWebView을주의해서 사용하십시오! 그것은 매우 강력하지만 큰 짐을 가지고옵니다. 단순한 페이지를 표시하기 위해 webview 만 필요하다면 웹 페이지를 구문 분석하여 텍스트보기로 표시 할 수있는 특성 문자열로 구문 분석하여 the new attributed string additions in iOS7 등의 도움을받을 수 있습니다.

+0

나는 똑같은 문제에 직면하고있다. 당신의 대답은 실제로 웹 뷰를 사용할 수 없다고 말한다. "주의해서 사용해야한다"고 말하면 거대한 문제를 해결하지 못한다. 네가 말한 것처럼 나던 메모리가 너무 많이로드되어 해제되지 않기 때문에 사용하지 못하게한다. 그에게 일종의 근근이하는 일을시키기 위해 보내는 것은 더 나쁘고, iOS를 사용하고 단순히 웹 페이지를 보여 주기만하면됩니다. 그 누출이 당신의 시스템에 머무르는 것을 막을 수 없습니다. 그래서 그것을 사용하는 실제 솔루션은 무엇입니까? – bilanbila

+0

그리고 아직까지도 실제로는 콘텐츠이므로 텍스트 필드의 웹보기는 합법적이지 않습니다. 플립 보드 문제에 관해서 더 많이 읽을 수 있습니다. – bilanbila

+0

@ user1994291 앱을 코딩하는 방법을 알 수 없습니다. 수천 개의 앱이 웹보기를 사용하며 괜찮습니다. 우리는 광범위하게 우리의 애플 리케이션에서 webviews를 사용하고, 모든 것이 좋습니다. 하지만 모든 앱이 웹 뷰를 필요로하는 것은 아닙니다. 당신이 그것을 사용할 수 있는지 여부는 대답 할 수있는 것입니다. –

관련 문제