La prueba simple de NSTimer no funciona

Estoy aprendiendo sobre NSTimer y después de leer Docs hice esta simple prueba. Tengo entendido que cuando llamo a viewDidLoad en main, viewDidLoad debería llamar a runTest después de 3.0 segundos, pero no está funcionando. Se compila bien sin errores pero no carga runTest (sin NSLog) por favor ayuda ... gracias.

#import "MyClass.h"
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

MyClass *trial = [[MyClass alloc]init];

[trial viewDidLoad]; ///// this should call viewDidLoad /////

[pool drain];
return 0;
}



#import <Foundation/Foundation.h>

@interface MyClass : NSObject {

NSTimer *aTimer;}

@property (nonatomic, retain) NSTimer *aTimer;

- (void)viewDidLoad;

- (void)runTest;

@end





#import "MyClass.h"

@implementation MyClass

@synthesize aTimer;

- (void)viewDidLoad {
    aTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self     selector:@selector(runTest) userInfo:nil repeats:NO];}

- (void) runTest {
NSLog(@"Working - runTest has loaded !");
aTimer = nil;
}
@end

preguntado el 08 de noviembre de 11 a las 11:11

¿Está seguro de que está llamando a viewDidLoad? -

1 Respuestas

No funcionará de esta manera. NSTimer requiere un runloop, que se creará automáticamente cuando haga una aplicación Cocoa normal, no una herramienta de línea de comandos de Foundation.

Cree el temporizador en el applicationDidFinishLaunching método del delegado de la aplicación o en el init de su objeto si crea una instancia en la plumilla principal.

respondido 08 nov., 11:15

¿Está diciendo que NSTimer no se puede utilizar de ninguna forma cuando se producen pequeñas aplicaciones solo para consola? si es así, un pequeño ejemplo de applicationDidFinishLaunching sería genial. - pete

Simplemente cree una nueva aplicación Cocoa y vaya a la clase AppDelegate. Ya verás - (void)applicationDidFinishLaunching:(NSNotification *)aNotification método. - Davyd Geyl

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.