iPhone gameloop tornar atualização de um segmento separado
-
03-07-2019 - |
Pergunta
Eu sou novo para o desenvolvimento do iPhone. Eu tenho uma configuração loop do jogo da seguinte forma.
(void)CreateGameTick:(NSTimeInterval) in_time
{
[NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil];
}
Meu carrapato básico do jogo / render olhares como este
(void)GameTick
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CGRect wrect = [self bounds];
while( m_running )
{
[self drawRect: wrect];
}
[pool release];
}
função Meu tornar é chamado. No entanto nada é desenhado (estou usando Core Graphics para desenhar algumas linhas em um UIView derivada).
Se eu chamar minha atualização através de um temporizador, então tudo está bem e bom.
Você pode me dizer por que o render falha quando feito através de tópicos? E é possível fazê-lo funcionar através de tópicos?
Graças Rica
Solução
Você não pode (bem, não deveria) chamar -drawRect: diretamente. Em vez disso, use -setNeedsDisplay; sua visão será então atualizada na próxima vez através do laço evento. Se você estiver executando isso em um segmento separado, você pode precisar usar performSelectorOnMainThread:.