gpt4 book ai didi

ios - 在 iPad 上显示大型 PDF 时 UIWebView 泄漏

转载 作者:可可西里 更新时间:2023-11-01 04:42:51 24 4
gpt4 key购买 nike

这里有一些奇怪的行为,我希望有人可以确认这是一个已知的错误,或者建议一个解决方法。

我的 iPad 应用程序需要显示一些大的 PDF(~7mb 和大量图形。)阻力最小的路径当然是 UIWebView,但我的应用程序在显示一些后崩溃。我将行为隔离在一个新项目中,并在其上运行 Instruments。

这是结果。它们似乎表明 UIWebView 中发生了严重的泄漏。

最小 View Controller 中的基本代码:

-(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 的主 Nib 、它的 View 和连接到 doPresent: 的五个按钮,每个按钮都标有 1...5;应用程序包中的 1.pdf 到 5.pdf。运行它,它的工作方式与您预期的一样,只是在查看 PDF 六次左右后它崩溃了。

在 Instruments (allocations) 下运行它产生了这个有趣的图: plot of memory usage

我注意到的模式是,如果我显示 PDF 并将其关闭而不滚动文档,它会按预期发布,泄漏最少。但如果我触摸它并滚动,即使是一点点,内存也不会被释放。查看后续 PDF 似乎并没有重用任何浪费的内存,但每个都分配了更多自己的内存。在模拟器中运行并触发内存警告也不会取回此内存。

当使用量达到 ~ 25mb 时,程序得到了 kill -9。这对我来说似乎很低,表明除了应用程序内存之外还有其他一些资源正在泄漏。

这是在 iPad 1 上运行的 4.3,刚刚重新启动。

想法?解决方法?我的愚蠢疏漏?

最佳答案

好吧,Apple 终于就错误报告回复了我,他们发现了这个错误并声称它已在最新的 ios 5.x 版本中得到修复。我们拭目以待。

关于ios - 在 iPad 上显示大型 PDF 时 UIWebView 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com