누군가가 알려진 버그인지 확인하거나 해결 방법을 제안하기를 바랍니다.iPad에서 큰 PDF를 표시 할 때 UIWebView가 새어 나옴
내 iPad 앱은 대형 PDF (~ 7MB 및 그래픽 무겁다)를 표시해야합니다. 최소 저항의 경로는 물론 UIWebView이지만, 몇 가지를 표시 한 후에 내 앱이 충돌합니다. 필자는 새로운 프로젝트에서이 동작을 분리하고 Instruments를 실행했습니다.
다음은 결과입니다. 그들은 UIWebView에서 잘못된 누출이 발생하고 있음을 나타냅니다.
최소 뷰 컨트롤러의 필수 코드 :
-(IBAction)doPresent:(UIView *)sender
{
NSURL *url = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"%d", [sender tag]]
withExtension:@"pdf"];
UIWebView *wv = [[[UIWebView alloc] init] autorelease];
UIViewController *vc = [[[UIViewController alloc] init] autorelease];
[vc setView:wv];
UINavigationController *holder = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];
[self presentModalViewController:holder animated:YES];
[wv loadRequest:[NSURLRequest requestWithURL:url]];
UIBarButtonItem *close = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(doDismiss:)] autorelease];
[[vc navigationItem] setRightBarButtonItem:close];
}
-(IBAction)doDismiss:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
}
그림에 없음이 VC, 그 도면 및 다섯 개 개의 버튼을 포함하는 기본 펜촉 doPresent:
연결된 각각 1 ... (5) 태그; 앱 번들의 1.pdf ~ 5.pdf. 그것을 실행하면 예상대로 작동하지만, PDF가 반 정도 나간 후에 충돌합니다. 장치 (할당) 아래를 실행
이 흥미로운 플롯을 굴복 : 나는 알 패턴은 내가 PDF를 표시하고 문서 주위에 스크롤하지 않고 그것을 기각하는 경우 예상대로, 출시 것,이다
누설이 적다. 그러나 내가 그것을 만져서 스크롤해도 조금이라도 기억이 풀리지는 않습니다. 후속 PDF보기는 낭비되는 메모리를 재사용하는 것처럼 보이지 않지만 각각의 메모리를 더 많이 할당합니다. 시뮬레이터에서 실행하고 메모리 경고를 트리거해도이 메모리가 다시 확보되지 않습니다.
사용량이 25MB를 초과하면 프로그램에 kill -9
'이 (가) 있습니다. 이것은 내게는별로 보이지 않는데, 앱 메모리 외에도 다른 리소스가 유출되었다고 생각됩니다.
이것은 iPad 1에서 4.3을 실행하고 새로 재부팅되었습니다.
아이디어가 있으십니까? 해결 방법은 무엇입니까? 내 부분에 어리석은 누락?
를 해결하는 것 같다. 동일한보기를 재활용하면 다른 것입니까? 우리가 막연하게 관련된 문제에 대한 해결책은 어떤 웹보기를 없애기 전에'about : blank'와 같은 빈 페이지를로드하는 것이 었습니다. – drawnonward
나는 대략 시도하지 않았다 : 빈 마술. 그럴만 한 가치가 있을지도 모릅니다. – rgeorge
웹보기를 약간 재활용하면 문제가 완화되지만 문제가 해결되지는 않습니다. – rgeorge