【问题标题】:iPhone programming - problem with CoreFoundation forkingiPhone 编程 - CoreFoundation 分叉问题
【发布时间】:2010-03-29 18:10:49
【问题描述】:

我已经在 iPhone 上工作了几个月。这是一款类似于老式 Smash TV 类游戏的 2D 射击游戏。

我一个人做所有事情,到目前为止效果很好,但现在我遇到了不可预知的崩溃,这似乎与 CoreFoundation 分叉而不是 exec()ing 有关,因为消息 __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONA LITY___YOU_MUST_EXEC__ 总是出现在某个地方在调试器中。通常它出现在 CFRunLoopRunSpecific 周围,并且与定时器触发或 _InitializeTouchTapCount 相关。我无法弄清楚到底是什么导致了分叉的发生。我的主游戏循环在计时器上运行,首先更新所有逻辑,然后使用 openGL 绘制所有内容。没有什么非常复杂或不寻常的。

我知道您不能在 fork 的子节点上进行 CF 调用,也不能访问共享内存之类的东西。我没有明确地试图分叉任何东西。我的问题是:谁能告诉我什么类型的活动可能导致 CoreFoundation 像这样随机分叉?

我真的很想完成这个游戏,但我不知道如何解决这个问题。感谢您的帮助。

【问题讨论】:

  • 除了 Cocoa Touch,您还使用哪些库?

标签: iphone objective-c core-foundation fork


【解决方案1】:

尝试在调试器中中断fork,看看发生了什么。

【讨论】:

  • 我试过了,但无论出于何种原因,它都没有在 fork() 或 __THE_PROCESS_HAS...(etc) 上中断。
【解决方案2】:

所以我错了。看起来 CoreFoundation 分叉毕竟没有引起问题。我只是在某个地方有一个悬空指针,这使它看起来比实际问题更大,并且总是将该消息留在调试器中的某个位置。不过,感谢任何花时间查看此问题的人。对于任何其他在调试问题时遇到问题的非专家 xcoder,这里有一些我用来了解更多信息的链接:

有助于 objc_msg_send 崩溃: http://www.sealiesoftware.com/blog/archive/2008/09/22/objc_explain_So_you_crashed_in_objc_msgSend.html

调试魔法: developer.apple.com/mac/library/technotes/tn2004/tn2124.html

谢谢, 汤姆

【讨论】:

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