Objective c 当NavigationController弹出时,应用程序崩溃!

Objective c 当NavigationController弹出时,应用程序崩溃!,objective-c,iphone,iphone-sdk-3.0,uinavigationcontroller,crash-reports,Objective C,Iphone,Iphone Sdk 3.0,Uinavigationcontroller,Crash Reports,下面是我从客户端发送的崩溃日志中复制/粘贴的内容。我不明白那是什么意思:s 显然,当导航回上一个屏幕时,应用程序看起来崩溃了(这是客户端报告的)。这里的UIWebDocumentView是什么 我需要解决坠机问题,但我被困在这里,因此非常感谢您的帮助 另外,我正在使用iPhoneSDK3.0 Date/Time: 2009-09-29 18:16:28.458 -0400 OS Version: iPhone OS 3.0 (7A341) Report Version:

下面是我从客户端发送的崩溃日志中复制/粘贴的内容。我不明白那是什么意思:s

显然,当导航回上一个屏幕时,应用程序看起来崩溃了(这是客户端报告的)。这里的UIWebDocumentView是什么

我需要解决坠机问题,但我被困在这里,因此非常感谢您的帮助

另外,我正在使用iPhoneSDK3.0

Date/Time:       2009-09-29 18:16:28.458 -0400
OS Version:      iPhone OS 3.0 (7A341)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xbbadbeef
Crashed Thread:  4

    Thread 4 Crashed:

        0   WebCore                         0x3588dd74 __ZL17_WebTryThreadLockb + 288
        1   WebCore                         0x3588e4c0 __ZL18_WebThreadAutoLockv + 52
        2   UIKit                           0x30aea484 -[UIWebDocumentView _responderForBecomeFirstResponder] + 8
        3   UIKit                           0x30978b34 -[UINavigationTransitionView transition:fromView:toView:] + 200
        4   UIKit                           0x30978a54 -[UINavigationTransitionView transition:toView:] + 24
        5   UIKit                           0x30974470 -[UINavigationController _startTransition:fromViewController:toViewController:] + 1604
        6   UIKit                           0x30973d90 -[UINavigationController _startDeferredTransitionIfNeeded] + 256
        7   UIKit                           0x309a7468 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 400
        8   UIKit                           0x309a72c8 -[UINavigationController popViewControllerAnimated:] + 32
        9   Snocell                         0x0002ae00 0x1000 + 171520
        10  Foundation                      0x30554062 -[NSThread main] + 42
        11  Foundation                      0x305023f2 __NSThread__main__ + 852
        12  libSystem.B.dylib               0x31d705a0 _pthread_body + 20

好吧,我想我找到了解决办法。在其他人遇到同样情况时分享:

EXC_BAD_ACCESS(SIGSEGV)KERN_INVALID_ADDRESS
表示您引用的虚拟地址不在页表中,或者您没有访问权限。这是一个不允许你访问的虚拟地址。对于您的示例地址0x67696c69,很可能这不是一个被视为指针的指针;或者包含指针的数据结构被释放并被其他数据覆盖

然后,我在日志中的堆栈跟踪中看到WebCore(WebCore是iPhone WebKit中的一个组件-)


所以,我在这里做的是,在UIWebView中显示一个网站,在它完全加载之前,弹出到以前的视图控制器,它崩溃了

我发现UIWebView在发布之前需要清除其委托;否则,如果web请求在释放UIWebView后完成,它将尝试回调委托并导致应用程序崩溃

解决方案:在弹出视图控制器之前,我添加了以下代码,它现在正在工作:)


我认为以下做法是正确的。首先将委托设置为nil

webView.delegate = nil;
if (webView.loading)
    [webView stopLoading];

好吧,我想我找到了解决办法。共享它以防有人掉到这里:EXC_BAD_ACCESS(SIGSEGV)KERN_INVALID_ADDRESS意味着您引用的虚拟地址不在页表中,或者您没有访问权限。这是一个不允许你访问的虚拟地址。对于您的示例地址0x67696c69,很可能这不是一个被视为指针的指针;或者包含指针的数据结构被释放并被其他数据覆盖。然后,我在日志中看到WebCore,iPhone WebKit()中的一个组件,我在这里做的是,在UIWebView中显示一个网站,在它完全加载之前,弹出到以前的视图控制器,它崩溃了。我发现UIWebView在发布之前需要清除其委托;否则,如果web请求在释放UIWebView后完成,它将尝试回调委托并导致应用程序崩溃。解决方案:在弹出视图控制器之前,我添加了“myWebView.delegate=nil;”,它现在可以工作了:)我遇到了一个类似的问题——webView.delegate=nil解决了它,就像你一样。我来这里是为了寻找坏牛肉。这个修复方案对我不起作用(尽管我在一台老式iPhone 2G上测试)。我只是删除了popViewController调用。虽然不是最聪明的解决方案,但它确实有效,而且在某些方面更符合逻辑。事实证明,删除popViewController语句也解决了其他问题。我认为最好不要在didFailLoadWithError方法中调用popViewController。谢谢,这有助于我找到正确的查看方向。有人知道这是否是WKWebView的问题吗?我们在几年前就实现了这个解决方案,但现在正在迁移到WKWebView,我们想知道是否应该让这个清理工作保持不变。
webView.delegate = nil;
if (webView.loading)
    [webView stopLoading];