【问题标题】:Draw on screen with CoreGraphics when hit NSSetUncaughtExceptionHandler命中 NSSetUncaughtExceptionHandler 时使用 CoreGraphics 在屏幕上绘制
【发布时间】: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


【解决方案1】:

我不确定NSSetUncaughtExceptionHandler 是否适合在屏幕上绘制内容。

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

大多数崩溃报告者都会仔细记录跟踪,并尽量不要“触摸”除此之外的任何东西。

如果你真的想画一些东西(什么?),你应该先捕获一个特定的异常。只是没有任何未捕获的异常。

【讨论】:

    【解决方案2】:

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

    P.S : 不好意思写到这里,cmets 被禁用,名声不大……

    【讨论】:

      【解决方案3】:

      就像 Rivera 说的那样,在这个阶段你将无法拯救应用程序,但如果你真的需要在这里绘制一些东西,你可能会启动另一个进程(你必须设计它)来显示这个图像.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多