Dan*_*eek 16 pdf iphone uiwebview ipad
我有一个UIWebView,我用来显示几个小PDF.用户从表中选择新闻文章,然后在同一屏幕上的UIWebView中加载文章(PDF).第一次加载总是很好.然后我选择的下一个项目(无论哪一个)崩溃应用程序.
这就是我加载每篇文章的方式:
NSString *filePath = [[NSBundle mainBundle] pathForResource:articleFileName ofType:@"pdf"];
[articleView stopLoading];
[articleView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
Run Code Online (Sandbox Code Playgroud)
崩溃发生在loadRequest行之后.
崩溃没有提供错误信息.以外:
所有异常{} 0x3629f000
Catchpoint 3(抛出异常).(gdb)
它只是崩溃到main().我已在调试器中验证它在每个请求上使用了正确的文件路径.
我有NSZombies正在运行,我为所有异常设置了断点.
Bek*_*Bek 36
我也有这个问题.非常感谢史蒂夫帮助我进一步缩小范围,我的例外与他的相同.
你有所有例外设置中断吗?我发现如果我禁用该断点,它不再崩溃.让我觉得这只是新调试器或iOS版本中的一些错误?让我想到的另一件事是,当我在iOS 4.3.x或4.3模拟器的设备上运行时,不会发生这种崩溃.
我看到类似的东西 - 在加载PDF后释放webview或在加载PDF后加载html时.它似乎是rdar:// 10431759(见http://openradar.appspot.com/10431759).我没有办法解决它.我可以通过加载pdf然后加载html字符串来重现它@"<div></div>",因此它似乎不是委托问题.
如果在gdb控制台中输入"bt",您可能会得到真正的堆栈跟踪,包括:
#0 0x37ccd1c8 in objc_exception_throw ()
#1 0x381817b8 in +[NSException raise:format:arguments:] ()
#2 0x381817b8 in +[NSException raise:format:arguments:] ()
#3 0x381817da in +[NSException raise:format:] ()
#4 0x35462628 in -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:] ()
#5 0x35462296 in -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:] ()
#6 0x31fc3448 in -[UIWebPDFView _removeBackgroundImageObserverIfNeeded:] ()
#7 0x31fc36a8 in -[UIWebPDFView dealloc] ()
#8 0x37cc90c4 in _objc_rootRelease ()
#9 0x31dd2614 in -[UIWebPDFViewHandler clearAllViews] ()
#10 0x31d76708 in -[UIWebPDFViewHandler _replacePDFViewIfPresentWithWebDocView:] ()
#11 0x31d766a6 in -[UIWebPDFViewHandler _removePDFViewIfWebDocViewIsNotPDF:] ()
#12 0x31d76644 in -[UIWebBrowserView webView:didFirstVisuallyNonEmptyLayoutInFrame:] ()
Run Code Online (Sandbox Code Playgroud)
在设备上进行调试时,可以输入"frame 0"和"po $ r0"来查看异常消息:(我认为它是模拟器中的"po $ eax".)
(gdb) frame 0
#0 0x37ccd1c8 in objc_exception_throw ()
(gdb) po $r0
Cannot remove an observer <UIWebPDFView 0x4a3200> for the key path "backgroundImage" from <UIPDFPageView 0x4a4bf0> because it is not registered as an observer.
Run Code Online (Sandbox Code Playgroud)
编辑:当我为Objective-C异常打开"Break on throw"时,似乎只会发生此问题.
| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |