【问题标题】:Is this causing EXC_BAD_ACCESS?这会导致 EXC_BAD_ACCESS 吗?
【发布时间】:2009-03-13 22:02:29
【问题描述】:

离开下面的方法后,我得到了 EXC_BAD _ACCESS。此时 htmlDocument 变得无效,因为它超出了范围,所以应该这样做。但这就是我收到错误的原因吗?当 contentView (UIWebView) 加载时,htmlDocument 已经消失了。但是 contentView 不是已经从 loadHTMLString 获得了它需要的东西吗?

- (void)viewDidLoad {
[super viewDidLoad];
//something other processing here

NSString *htmlDocument = [NSString stringWithFormat:@"<html> \n"
"<body>%@</body> \n"
"</html>", aboutContent];
[contentView loadHTMLString:htmlDocument baseURL:[NSURL URLWithString:@"http://www.abc.com"]];  

}

有没有更好的方法来遵循这一点直到失败?离开这个方法是我的代码行的结尾。来自那里的 SDK 东西。

【问题讨论】:

    标签: iphone cocoa-touch uiwebview


    【解决方案1】:

    从您的第二篇文章中,您注释掉的行([按钮释放])释放了一个已标记为自动释放的对象。

    要么删除您正在为按钮执行分配的“自动释放”,要么删除 [button release] 语句以使代码编译时不会出现错误和异常。

    如果一个对象被标记为自动释放,调用它的释放将与调用释放实例的释放相同,因此会出现错误。

    【讨论】:

      【解决方案2】:

      假设“aboutContent”是指向对象的有效指针,我会说这段代码没有任何问题。

      【讨论】:

      • 它是一个有效的指针,因为它有一个地址。不过,有些东西会分崩离析。但我当时并没有参与。此错误通常与某些内存问题有关。肯定是我造成的。
      【解决方案3】:

      您可以尝试在模拟器上使用 Guard Malloc 运行您的应用,但这并不能保证会出现任何结果。我建议您开始注释语句,直到找到导致错误的语句。

      【讨论】:

        【解决方案4】:

        在没有更多上下文的情况下,不清楚您刚刚提供的代码 sn-p 发生了什么。也就是说,看起来您想要做的只是在设备中本地加载一些 HTML。为什么不这样做呢?

        - (void)viewDidLoad {
            [webView loadRequest:[NSURLRequest 
                                  requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                                        pathForResource:@"help/about.html"
                                                        ofType:@"html"]isDirectory:NO]]];
        }
        

        使用这种技术,您可以直接在手机中编写基于 HTML 的文档,而无需用户意识到他们实际上正在查看 Web 视图这一事实:这包括 Javascript、CSS 和整个蜡球。我见过人们实际上将他们的 iPhone 应用程序放到 Internet 上只是为了在 Internet 上呈现一个静态页面,这确实没有必要。

        【讨论】:

          【解决方案5】:

          从您在第二篇文章中的示例代码中,您发布的按钮 UIBarButtonItem *button 不会被您注释掉的发布后的任何内容保留 - 因此它被释放。

          您需要将按钮添加到另一个视图(使用adSubview)才能显示它,然后您可以释放它。父视图将保留该按钮。

          当然,如果您要再次引用该按钮,您的视图控制器应该在其 dealloc 中保留并释放该按钮。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-10
            • 1970-01-01
            • 1970-01-01
            • 2012-07-27
            相关资源
            最近更新 更多