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

¿Fue útil?

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:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top