2010-12-10 35 views
0

Bit d'un noob ici.Utilisation de NSTimer pour arrêter l'application

Je développe une application qui joue des sons en boucle. Je voudrais donner à l'utilisateur la possibilité de fermer l'application après un certain temps en utilisant une minuterie. L'idée est que l'utilisateur appuie sur un bouton et que l'application s'arrête une fois le délai écoulé.

Au moment où le bouton est enfoncé, l'application se bloque.

Voici ce que je suis arrivé à ce jour:

- (IBAction)timer:(id)sender{ 

    timer = [NSTimer scheduledTimerWithInterval: 10.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 

} 


-(void) targetMethod: (NSTimer*) theTimer { 
    NSLog(@"timer?"); 
    exit(0); 

} 
+0

Votre code semble raisonnable, en supposant que la minuterie est retain propriété que je suppose? La prochaine chose à faire serait de mettre des messages NSLog avant et après l'appel [timer scheduledTimer ...], et un autre NSLog dans le targetMethod: – MahatmaManic

+0

Une autre chose à rechercher est de s'assurer que lorsque vous déclarez l'IBAction dans l'en-tête que vous le déclarez de la même façon que vous le déclarez dans le timer .m - (IBAction): (id) expéditeur et qu'il est câblé correctement dans le xib. Si vous voyez quelque chose sur l'accident comme "sélecteur non reconnu" et/ou vous ne voyez pas ces messages de journal de tir alors vous ne l'avez pas câblé tout à fait correct – MahatmaManic

+2

Apple n'approuvera pas une application qui se ferme délibérément. Si vous allez faire cela, ne vous attendez pas à ce que l'App Store soit une voie de publication. – Tommy

Répondre

1

Vous devez définir correctement votre référence de minuterie:

NSTimer *timer = [NSTimer scheduledTimerWithInterval: 10.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 
+0

Comme le note @jsumners, vous manquez le 'NSTimer *' au début de votre déclaration de minuterie. Vous devez spécifier le type et que c'est un pointeur. –

+0

Merci pour les réponses. Je devrais probablement ajouter que j'ai la minuterie déclarée dans le fichier d'en-tête en tant que tel: NSTimer * timer; Je vais vérifier le code pour m'assurer que toutes les suggestions faites sont présentes dans le code. – redned

+0

RÉSOLU! J'ai eu NSTimer * timer = [NSTimer scheduledTimerWithInterval: 10.0 cible: self selector: @selector (targetMethod :) userInfo: nil répète: YES]; au lieu de NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval: 10.0 cible: self selector: @selector (targetMethod :) userInfo: nil répète: YES]; J'ai omis le temps avant l'intervalle. Merci à tous pour les réponses. – redned