"NSInternalInconsistencyException: не инициализировать TextureCache до Директора"
Чтобы найти решение, я перешел по этой похожей ссылке: Ошибка TextureCache от Cocos2d при интеграции в приложение UIKit, но похоже, что она имеет дело с этой ошибкой в другом контексте.
Вопрос: У меня есть проект UIKit, интегрированный с Cocos2d. Когда сборка завершается успешно и запускается, но иногда падает после получения предупреждения памяти с этой ошибкой:
Ошибка подтверждения в -[CCTextureCache init], /Users/MyName/Documents/CSProject/CSProject/libs/cocos2d/CCTextureCache.m:90
Завершение работы приложения из-за неперехваченного исключения "NSInternalInconsistencyException", причина: "Не инициализировать TextureCache до Директора"
Сцена cocos2d запускается из контроллера вида при нажатии кнопки, и код приведен ниже:
В ViewController.m
-(IBAction)overToCocos:(id)sender{
CCDirector *director = [CCDirector sharedDirector];
CCGLView *glView = [CCGLView viewWithFrame:CGRectMake(-100, -50, 480, 480)
pixelFormat:kEAGLColorFormatRGBA8
depthFormat:0];
glView.opaque = NO;
self.imagePicker.cameraOverlayView.userInteractionEnabled = YES;
[self.imagePicker.cameraOverlayView insertSubview:glView atIndex:0];
[self.imagePicker.cameraOverlayView bringSubviewToFront:glView];
[director setView:glView];
[director runWithScene:[HelloWorldLayer scene]];
}
Так как сбой происходит после получения предупреждения памяти, я попробовал это
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
if ( [ CCDirector sharedDirector ].view != nil ){
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
}
}
Также добавили это в приложение AppDelegateDidReceiveMemoryWarning. Но сбой все еще существует.. Пожалуйста, укажите мне правильное направление, чтобы справиться с этой ошибкой..
Заранее спасибо!