Сбой, если фоновое приложение cocos2d 2.1 в iOS7 при просмотре экранов Game Center (таблица лидеров, достижение)

У меня здесь 100% воспроизводимый сбой.

Сбой, если фоновое приложение cocos2d 2.1 в iOS7 при просмотре экранов Game Center (таблица лидеров, достижение). Вылетает мгновенно при нажатии кнопки домой.

Сбой в строке 275 в CCGLView.m:

if(![_context presentRenderbuffer:GL_RENDERBUFFER])

Дело в том, что я скачал свежую копию официального Cocos2diphone 2.1 вторую секунду, установил ее шаблоны и запустил приложение-сшиватель после того, как подключил его к тому же идентификатору приложения, что и у моего проблемного приложения, в котором уже есть таблицы лидеров игрового центра и т. Д. Это не сбой. Поэтому я запустил diff для папок cocos2d внутри lib, и нет никакой разницы, за исключением того, что я добавил код некоторых функций C в CCDrawingPrimitives.h / m ... Не должно быть проблемы. Так что проблема не должна быть в самом cocos2d, а как-то его использование или настройка моего проекта.

Обновить:

Кажется, проблема в шаблоне приложения cocos2d, который используется в 2.1 и, возможно, ранее. Это выглядит так:

-(void) applicationDidEnterBackground:(UIApplication*)application
{
    if( [navController_ visibleViewController] == director_ )
        [director_ stopAnimation];
}

И очевидная ошибка здесь заключается в том, что если у вас navController открывает контроллер Game Center, то при нажатии кнопки «home» visibleViewController of Director_ будет контроллером GC, следовательно, stopAnimation не будет вызываться. Это приводит к падению с iOS7, но, похоже, не с iOS6 ... ни с шаблоном приложения cocos2d 2.1 (все еще запутанным здесь).

Текущее исправление - закомментироватьif( [navController_ visibleViewController] == director_ ) чтобы всегда вызывать stopAnimation. Не уверен, есть ли какие-либо побочные эффекты с этим, но пойдем с этим пока.

Ответы на вопрос(1)

Ваш ответ на вопрос