点击NSSetUncaughtExceptionHandler时,使用CoreGraphics在屏幕上绘图

时间:2014-08-04 19:03:34

标签: ios objective-c exception core-graphics

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];
}

3 个答案:

答案 0 :(得分:1)

我不确定NSSetUncaughtExceptionHandler是否是在屏幕上绘制内容的好地方。

  

设置您可以执行的顶级错误处理功能   程序终止前的最后一分钟记录。

大多数崩溃记者都仔细记录了痕迹,尽量不要“触摸”任何东西。

如果你真的想画一些东西(什么?)你应该首先捕获一个特殊的例外。只是没有任何未被捕获的例外。

答案 1 :(得分:1)

我认为 Rivera 是正确的,关于NSSetUncaughtExceptionHandler。也许你需要写:[path fill];

P:对不起,我写在这里,评论禁用,小声誉......

答案 2 :(得分:1)

就像Rivera所说,你在这个阶段你无法拯救应用程序,但是如果你真的需要在这里画一些东西,你可能会启动另一个进程(你必须设计)才能显示这个形象。