rge*_*rge 5 pdf memory-leaks uiwebview ipad ios
这是一些奇怪的行为,我希望有人可以确认是一个已知的bug,或建议一个解决方法.
我的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];
}
Run Code Online (Sandbox Code Playgroud)
没有图示:主要的笔尖包含这个VC,它的视图和连接的五个按钮doPresent:
,每个标记有1 ... 5; 应用程序包中的1.pdf到5.pdf.运行它并且它可以像您期望的那样工作,除了它在PDF的六个左右视图之后崩溃.
在仪器(分配)下运行它产生了这个有趣的情节:
我注意到的模式是,如果我显示PDF并在不滚动文档的情况下将其关闭,它会按预期释放,泄漏最少.但是,如果我触摸它并滚动,即使是一点点,内存也不会被释放.查看后续PDF似乎没有重用任何浪费的内存,但每个都分配了更多自己的内存.在模拟器中运行并触发内存警告也不会获得此内存.
当使用量达到〜25mb时,程序得到了kill -9
'd.这对我来说似乎很低,暗示除了app内存之外还有一些其他资源被泄露.
这是在运行4.3的iPad 1上重新启动.
想法?解决方法?我的愚蠢遗漏?
归档时间: |
|
查看次数: |
2602 次 |
最近记录: |