在UIWebView的委托方法webView:shouldStartLoadWithRequest:navigationType:中,我在其中放置了一个NSAssert,但是它只是输出一个日志,而不是终止。这是我的代码:
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSAssert(NO,@"assertion in delegate");
return YES;
}以及产出:
* webView:decidePolicyForNavigationAction:request:frame:decisionListener:委托中的WebKit丢弃了一个未察觉的异常:委托中的断言
发布于 2016-06-13 17:23:05
发布于 2016-06-13 05:00:02
失败的NSAssert引发ObjC异常。(准确地说,是NSInternalInconcistencyException。)任何人都可以安装异常处理程序或其他机制来定义在它们调用的代码中引发的异常发生了什么。而且,这些机制不一定包括停止进程(尽管在异常之后继续进行通常不是一个好主意)。
当您在回调中引发ObjC异常时,无法保证执行会因此而终止--无论调用您的代码设置了什么异常处理,您都可以随意处理。如果您想让整个过程因为委托代码中的一些失败而崩溃,最好自己来abort()。
https://stackoverflow.com/questions/37781529
复制相似问题