iPhone Gameloop renderizar actualización desde un hilo separado
-
03-07-2019 - |
Pregunta
Soy nuevo en el desarrollo de iPhone. Tengo una configuración de bucle de juego de la siguiente manera.
(void)CreateGameTick:(NSTimeInterval) in_time
{
[NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil];
}
Mi tick / render básico del juego se ve así
(void)GameTick
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CGRect wrect = [self bounds];
while( m_running )
{
[self drawRect: wrect];
}
[pool release];
}
Se llama a mi función de render. Sin embargo, no se dibuja nada (estoy usando Core Graphics para dibujar algunas líneas en una vista UIV derivada).
Si llamo a mi actualización a través de un temporizador, todo está bien.
¿Puede decirme por qué falla el renderizado cuando se realiza mediante subprocesos? ¿Y es posible hacerlo funcionar a través de hilos?
Gracias Rico
Solución
No puedes (bueno, no deberías) llamar -drawRect: directamente. En su lugar, use -setNeedsDisplay; su vista se actualizará la próxima vez a través del bucle de eventos. Si está ejecutando esto en un subproceso separado, es posible que necesite usar performSelectorOnMainThread: