objective-c – 如何防止EXC_BAD_ACCESS崩溃应用程序?

前端之家收集整理的这篇文章主要介绍了objective-c – 如何防止EXC_BAD_ACCESS崩溃应用程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法防止EXC_BAD_ACCESS崩溃的应用程序,像@try .. @ catch你可以正常处理异常.

更新:

当尝试取消引用无效指针时,代码崩溃.这是一个第三方库,它与外部硬件接口,所以我无法在本地调试.我试图阻止它崩溃并输出数据到我的应用程序调试控制台.

解决方法

在ObjC中,try / catch特别优雅地处理异常.您仍然会泄漏内存并使系统处于未定义的状态.除了罕见的例外,期望是你只是捕捉,所以你可以在崩溃之前记录一些事情.总而言之,您不应该在程序的任何地方使用@catch,而应该在程序的顶层.有一些特殊情况,有限的使用例外可能是适当的,但在ObjC中很少见.有关更多信息,请参阅 Exception Programming Guide.特别从 ObjC ARC documentation

The standard Cocoa convention is that exceptions signal programmer error and are not intended to be recovered from. Making code exceptions-safe by default would impose severe runtime and code size penalties on code that typically does not actually care about exceptions safety. Therefore,ARC-generated code leaks by default on exceptions,which is just fine if the process is going to be immediately terminated anyway. Programs which do care about recovering from exceptions should enable the option [-fobjc-arc-exceptions,which imposes speed and memory penalties on your program].

EXC_BAD_ACCESS也是如此.您可以用信号处理程序来捕获它,目的是记录一些信息,然后完成您的崩溃.要做一个很好的工具,请参阅PLCrashReporter.正确编写这样的处理程序是非常困难的,所以我强烈建议使用现有的框架.如果您错误地抓到EXC_BAD_ACCESS,您可以很容易地陷入用户电池的死锁.

原文链接:https://www.f2er.com/c/113938.html

猜你在找的C&C++相关文章