2011-08-25 4 views
1

UIWebView에 문제가 있습니다. 이 구성 요소를 사용하여 iPad/iPhone에서 일반 웹 페이지를로드합니다. UIWebView는 modalViewController에 제공됩니다. 일부 페이지는 매우 많은 메모리를 필요로하며 일부는 Flash 내용을 가지고 있습니다. 방법의 viewDidLoad -많은 메모리에 UIWebView 할당을 방지합니다.

문제는 때때로 일부 페이지에 나는이 경우

Received memory warning. Level=1 

경고 메모리를 얻을 내가 이전보기 다시로드 automacially 자체보다 (페이지는 웹보기에로드)이 modalViewController을 닫는 것이있다 다시 해고됩니다.

UIWebView의 일부 페이지가 메모리를 많이 소비하고 응용 프로그램이 뷰의 메모리를 해제하지만 크래시가 발생하지 않는다고 생각됩니다.

WebView의 메모리 사용을 제한하는 방법이 있습니까? 아니면이 메모리 경고를 피할 수있는 다른 방법이 있습니까?

감사합니다.

답변

3

UIWebView 개체의 메모리 사용을 거의 제어 할 수 없습니다. 또한 전체 시스템 메모리 사용을 거의 제어 할 수 없습니다. 따라서 메모리 경고를 피할 수있는 방법은 없습니다. iOS는 메모리 경고를 받으면 앱이 제대로 작동 할 것으로 기대하므로 메모리 경고 후 다시 실행을 처리하기 위해 viewDidLoad 메서드를 작성해야합니다.

UIWebView의 메모리 사용을 제한하기 위해 수행 할 수있는 유일한 작업은 간단한 웹 페이지를 보는 것입니다. 귀하의 질문에서 본 것처럼, 그것은 옵션이 아닙니다.

편집 :viewDidUnload은 메모리 부족 조건에서 호출됩니다. 이 메서드는 viewDidLoad 메서드에서 쉽게 다시 만들 수있는 모든 것을 해제 할 것으로 예상됩니다. 이보기가 화면에 리턴 될 때 사용자에게 표시 할 상태 정보를 해제하지 마십시오. 그런 다음 viewDidLoad 메소드에서 작성한 모든 오브젝트를 점검하십시오. 값이 nil 인 경우 초기화해야합니다. 그렇지 않으면 처음으로 viewDidLoad 메서드가 호출 된 것이 아니며 개체를 초기화하지 않아야합니다.

즉, viewDidUnload은 메모리 부족 상황을 처리하고 viewDidLoad은 한 번 실행한다고 가정해서는 안됩니다.

+0

설명해 주셔서 감사합니다. 하지만 viewDidLoad에서 메모리 경고를 처리하려면 어떻게해야합니까? –