Программирование iPhone - проблема с разветвлением CoreFoundation

Работаю на айфоне несколько месяцев. Это 2D стрелялка, похожая на старые игры типа Smash TV.

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

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

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


person Tom    schedule 29.03.2010    source источник
comment
Какие библиотеки вы используете, помимо Cocoa Touch?   -  person Peter Hosey    schedule 30.03.2010


Ответы (2)


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

person Chuck    schedule 29.03.2010
comment
Я пытался, но по какой-то причине он не ломается на fork() или __THE_PROCESS_HAS... (и т. д.). - person Tom; 30.03.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

Спасибо, Том

person Tom    schedule 06.04.2010