J'ai une application iPhone personnalisée qui ne repose en aucune façon sur UIKit (elle n'est pas liée à UIKit). Cela signifie que je n'utilise pas UIApplication et n'appelle donc pas UIApplicationMain.NSTimer ne fonctionne pas sans UIApplication?
Le problème est que lorsque je crée une minuterie, elle ne se déclenche jamais. La minuterie est créé comme ça:
[NSTimer timerWithTimeInterval:10 target:self selector:@selector(updateTime) userInfo:nil repeats:TRUE];
Je soupçonnant que le problème pourrait être exécuté en boucle liée comme après avoir fini l'initialisation de base dans « principal() », je fais ceci:
NSLog(@"Starting application ...");
applicationInstance = [MyApp alloc];
[applicationInstance setMainLayer:mainLayer];
[NSThread detachNewThreadSelector:@selector(runApplication) toTarget:applicationInstance withObject:nil];
CFRunLoopRun();
Je UIKit rétro-conçu et remarqué que UIApplication fait beaucoup plus de choses comme l'inscription pour les événements du système, etc NSTimer peut-être compter sur l'une de ces choses. L'autre chose que j'ai remarqué est que dans le délégué de UIApplication le thread est le même que dans main().
Comment puis-je obtenir NSTimer pour fonctionner correctement? Si c'est lié à la boucle d'exécution, quelqu'un peut-il signaler l'erreur? "CFRunLoopRun()" est utilisé pour raccrocher le thread principal afin que le reste de l'application puisse s'exécuter. Je ne pense pas que ce soit juste.
Éditer: Je pense que la boucle d'exécution doit être configurée. D'une certaine manière ...
Alors, comment puis-je obtenir que cela fonctionne? Je suis vraiment confus en ce moment –
Avez-vous consulté le Guide de programmation de Threaded? La section sur "Utiliser les boucles d'exécution"? Je n'ai pas encore créé mon propre Run Loop, mais ça me semble être un bon point de départ! –
Oui, je l'ai fait. Il n'a fourni aucune information :( –