【发布时间】:2014-08-04 19:03:34
【问题描述】:
当NSSetUncaughtExceptionHandler 被调用但什么也没发生时,我正试图在屏幕上绘制一些简单的东西。
有没有其他方法可以捕获异常并在屏幕上快速绘制一些东西?
NSSetUncaughtExceptionHandler(&exceptionHandler);
void exceptionHandler(NSException *exception)
{
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(10.0, 10.0)];
[path moveToPoint:CGPointMake(10.0, 10.0)];
[path addLineToPoint:CGPointMake(10.0, 450.0)];
[path addLineToPoint:CGPointMake(310.0, 450.0)];
[path addLineToPoint:CGPointMake(310.0, 10.0)];
[path addLineToPoint:CGPointMake(10.0, 10.0)];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [[UIColor blueColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
[APP_DELEGATE_WINDOW.rootViewController.view.layer addSublayer:shapeLayer];
[APP_DELEGATE_WINDOW makeKeyAndVisible];
}
【问题讨论】:
-
您确定执行正在进入您的处理程序吗?如果异常发生在主线程,它会起作用吗?
-
哦,你肯定
APP_DELEGATE_WINDOW.rootViewController.view.layer不是零吗? -
"..未捕获的异常处理程序总是导致程序退出.." 所以在屏幕上添加形状似乎没有任何意义。你可以在这里阅读其余部分Apple Docs UncaughtExceptions。也许可以将形状保存到文件系统上的图像中。
-
是的,似乎总是会导致退出。也许可以通过在它自己的运行循环中做你想做的事情来解决它。
-
我确定执行进入处理程序,因为我做了一些记录,并且我确定 'APP_DELEGATE_WINDOW.rootViewController.view.layer' 不为零,因为我在我的应用程序的不同部分使用它.
标签: ios objective-c exception core-graphics