线程一个程序收到:SIGKILL,仅在4.3模拟器中。

3
当我使用5.0模拟器时,完全没有出现任何错误。
当我使用4.3模拟器时,在Xcode中使用停止按钮停止应用程序执行时,会出现以下消息:
基本上,我正在浏览我的程序,并启动带有uiwebview的视图,控制台中出现以下内容:
连接到进程13343。 [切换到进程13343线程0x2103]
我继续使用应用程序,只有当我停止执行时才会收到以下错误消息:
线程1程序接收到:SIGKILL
我认为问题在于当uiwebview需要用户交互时打开了另一个线程。然后,当我发送kill消息时,第一个线程收到sigkill并报告错误。
如果我加载不带有uiwebview的相同视图,则根本不会收到错误消息。
而且,当我使用5.0模拟器时,加载uiwebview时根本不会出现此错误消息。
我已经看到uitextview的类似行为。
这是我应该担心的事情吗?在实际硬件上运行时似乎没有问题。
我可以在推送其他视图并完成uiwebview后切换回线程1的方法吗?
1个回答

2
SIGKILL是操作系统向任何应用程序发送的指令,告诉它停止运行并删除其进程。SIGKILL不是你的错误,也不是模拟器的故障,当你按下主屏幕按钮并在多任务抽屉中关闭应用程序,或者在Xcode上按下停止按钮时,就会发生这种情况。因此,要重申一遍,不要认为这是你的错,有时只是模拟器出了些问题。(比如我曾经将设备保持在调试模式下并重新启动设备,结果日志中出现了300行二进制代码,非常诡异!)
PS(虽然我非常怀疑你会遇到这个问题):如果你的应用程序使用了太多的内存,也可能会发送SIGKILL指令,这将导致异常或EXC_BAD_ACCESS,具体取决于你是如何管理内存的,但这种情况非常罕见。

但是,为什么我只在4.3的模拟器中看到它,而不是5.0的模拟器中看到它?这就是我的担忧所在,但也许我不应该这么想。 - Matt
1
你不应该担心。就像我说的,有时候调试器的响应速度不够快,所以它会将SIGKILL解释为异常并显示出错代码行。别担心,这完全不是你的错。模拟器经常表现得很奇怪。 - CodaFi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接