为了防止一个应用占用过多的系统资源,苹果设计了一个“看门狗”(watchdog)
的机制。在不同的场景下,“看门狗”
会监测应用的性能。 如果超出了该场景所规定的运行时间,“看门狗”
就会强制终结
这个应用的进程。 开发者们在crashlog
里面,会看到诸如0x8badf00d
这样的错误代码。 异常代码:“0x8badf00d”
,即“ate bad food”
。
如果我们的应用程序对一些特定的UI事件(比如启动、挂起、恢复、结束)响应不及时,Watchdog会把我们的应用程序干掉,并生成一份响应的crash报告。
苹果开发文档原文:
- The exception code
0x8badf00d
indicates that an application has been terminated by iOS because a watchdog timeout occurred. The application took too long to launch, terminate, or respond to system events. One common cause of this is doing. Whatever operation is onThread 0
needs to be moved to a background thread, or processed differently, so that it does not block the main thread.