Вы должны использовать потоки, когда это имеет смысл, т.е. когда вы в противном случае заблокировали бы основной (UI) поток во время длительной операции. Примеры дорогостоящих операций включают загрузку изображений и звуков с диска и получение информации из сети. Для цикла событий в игре потоки не являются необходимыми, потому что события в игре не являются совершенно одновременными (на самом деле две операции на iPhone никогда не бывают одновременными, потому что это однопроцессорная система). Вместо этого вы можете последовательно выполнять всю игровую логику и обновлять пользовательский интерфейс по мере необходимости. Однако, если я не ошибаюсь, фреймворк, такой как Cocos2D, вероятно, использует модель инверсии зависимостей, которая вызывает ваш клиентский код, и поэтому создает все необходимые потоки за кулисами. Я бы посоветовал взглянуть на учебник по этой конкретной среде, чтобы увидеть рекомендуемый стиль.