Zawieszenie w przypadku korzystania z aplikacji cocos2d 2.1 w systemie iOS7 podczas oglądania ekranów Game Center (liderów, osiągnięć)

Mam tutaj w 100% powtarzalną awarię.

Zawieszenie w przypadku korzystania z aplikacji cocos2d 2.1 w systemie iOS7 podczas oglądania ekranów Game Center (liderów, osiągnięć). Awaria natychmiast po naciśnięciu przycisku home.

Awaria w linii 275 w CCGLView.m:

if(![_context presentRenderbuffer:GL_RENDERBUFFER])

Chodzi o to, że pobrałem świeżą kopię oficjalnego cocos2diphone 2.1, drugą zainstalowałem szablony i uruchomiłem aplikację zszywającą po podłączeniu go do tego samego identyfikatora aplikacji, co moja problematyczna aplikacja, która ma już ustawione rankingi centrum gier itp. Nie ulega awarii. Uruchomiłem diff na folderach cocos2d wewnątrz biblioteki i nie ma różnicy, z wyjątkiem tego, że dodałem kod C funkcji w CCDrawingPrimitives.h / m ... Nie powinien to być problem. Więc problem nie powinien dotyczyć samego cocos2d, ale powoduje to jego użycie lub mój projekt.

Aktualizacja:

Problem wydaje się występować w szablonie aplikacji cocos2d używanym w wersji 2.1 i prawdopodobnie wcześniejszej. To wygląda tak:

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

Oczywistą wadą jest to, że jeśli masz navController, otwórz kontroler Game Center, a następnie, naciskając przycisk home, visibleViewController reżysera_ będzie kontrolerem GC, dlatego stopAnimation nie zostanie wywołane. Powoduje to awarię systemu iOS7, ale wydaje się, że nie działa z iOS6 ... ani szablonową aplikacją cocos2d 2.1 (nadal jest to niejasne).

Obecna poprawka polega na skomentowaniuif( [navController_ visibleViewController] == director_ ) aby zawsze wywoływać stopAnimation. Nie jestem pewien, czy są z tym jakieś skutki uboczne, ale na razie pójdą z tym.

questionAnswers(1)

yourAnswerToTheQuestion