программирование iPhone - проблема с разветвлением CoreFoundation - PullRequest
1 голос
/ 29 марта 2010

Я работаю над iPhone несколько месяцев. Это двухмерная стрелялка, похожая на старые игры типа Smash TV.

Я делаю все в одиночку, и до сих пор все получалось, но теперь я получаю непредсказуемые сбои, которые, по-видимому, связаны с разветвлением CoreFoundation, а не с exec (), так как сообщение __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONA LITY___YOU_MUST_EXEC__ всегда где-то появляется в отладчике. Обычно он появляется вокруг CFRunLoopRunSpecific и связан либо с срабатыванием таймера, либо с _InitializeTouchTapCount. Я не могу понять, что именно вызывает форк. Мой основной игровой цикл выполняется по таймеру, сначала обновляя всю логику, а затем рисуя все с помощью openGL. Нет ничего очень сложного или необычного.

Я понимаю, что вы не можете делать CF-вызовы на дочерней стороне вилки или получать доступ к общей памяти и тому подобным вещам. Я явно не пытаюсь ничего раскошелиться. Мой вопрос: может ли кто-нибудь сказать мне, какой тип деятельности может привести к случайному разветвлению CoreFoundation, как это?

Мне бы очень хотелось закончить эту игру, и я не знаю, как решить эту проблему. Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2010

Так что я был не прав. Похоже, что разветвление CoreFoundation не вызвало проблемы в конце концов. У меня просто был где-то висящий указатель, который казался мне более серьезной проблемой, и я всегда оставлял это сообщение где-то в отладчике. Спасибо всем, кто нашел время для просмотра этого вопроса. Для любых других неопытных xcoders, имеющих проблемы с отладкой проблемы, вот несколько ссылок, которые я использовал, чтобы узнать больше:

Полезно при сбоях 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

Спасибо, Том

0 голосов
/ 29 марта 2010

Попробуйте взломать fork в отладчике и посмотрите, где это происходит.

...