estoy corriendo un Mainloop en Cocoa usando un NSTimer configurado de esta manera:intervalo de cambio NSTimer para repetir temporizador
mainLoopTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/fps target:self selector:@selector(mainloop) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:mainLoopTimer forMode:NSEventTrackingRunLoopMode];
al inicio del programa que establezca el timeInterval a 0,0 para que el mainloop corre tan rápido como sea posible. De todos modos, me gustaría proporcionar una función para establecer la velocidad de fotogramas (y por lo tanto el intervalo de tiempo del temporizador) a un valor específico en el tiempo de ejecución. Por desgracia, por lo que yo se que significa que tengo que reiniciar el temporizador desde el cacao no proporciona una función como "setTimerInterval" Esto es lo que he intentado:
- (void)setFrameRate:(float)aFps
{
NSLog(@"setFrameRate");
[mainLoopTimer invalidate];
mainLoopTimer = nil;
mainLoopTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/aFps target:self selector:@selector(mainloop) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:mainLoopTimer forMode:NSEventTrackingRunLoopMode];
}
pero esto arroja el siguiente error y detiene el mainloop :
2010-06-09 11: 14: 15.868 MyTarget [7313: a0f] setFrameRate 2010-06-09 11: 14: 15.868 MyTarget [7313: a0f] * __NSAutoreleaseNoPool(): Object 0x40cd80 de clase __NSCFDate autorellenada sin ningún grupo en su lugar - solo goteando 2010-06-09 11: 14: 15.869 myTarget [7313: a0f] * __NSAutoreleaseNoPool(): Object 0x40e700 de clase NSCFTimer autoreleased sin piscina en su lugar - sólo fugas 0,614628
También traté de recrear el temporizador usando la palabra clave "mantener", pero eso no cambia nada. ¿Alguna idea sobre cómo cambiar dinámicamente el intervalo de un NSTimer en tiempo de ejecución?
Gracias!
¿Qué debo hacer para cambiar el intervalo? – moka
Perdón. Leí mal [lanzamiento de MainLoopTimer]. Está actuando correctamente con el temporizador, pero parece que AutoReleasePool no está en su lugar. échale un vistazo aquí: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html – garph0
hmm Ya intenté poner un autoreleasepool en su lugar, pero no funcionó , pero lo intentaré de nuevo! – moka