2010-11-15 9 views
1

J'ai un Bool que j'utilise dans une instruction if. La variable commence par NO, puis j'entre l'instruction if, qui s'exécute si la valeur de bool est NO. Ensuite, je change la valeur à YES à la fin de l'instruction if pour qu'elle ne s'exécute plus, standard. Ce que je veux faire est en quelque sorte de changer cette variable YES à la fin, mais il faut revenir à NO après environ cinq secondes. Comment cela peut-il être fait?Comment faire BOOL avoir une valeur pendant une courte période, puis modifier dans Objective-C

Répondre

2

Vous pouvez utiliser NSTimer:

[NSTimer scheduledTimerWithTimeInterval:5.0 
           target:self 
           selector:@selector(resetSomeBoolean:) 
           userInfo:nil 
           repeats:NO]; 


- (void) resetSomeBoolean:(NSTimer *) timer { 
    self.someBoolean = NO; 
} 

Aussi, assurez-vous que cette propriété (someBoolean) est atomic.

0

Peut-être définir quelque chose comme:

... your code ... 
myBool = YES; // set some senteniel. 

[NSTimer scheduledTimerWithTimeInterval:5.0 
           target:self 
           selector:@selector(resetMyBool:) 
           userInfo:nil 
           repeats:NO]; 
return; 
} 

et ajouter quelque chose comme

- (void) resetMyBool:(NSTimer*)meTimer { 
     myBool = NO; 
} 

à votre classe. Mais êtes-vous sûr que vous avez besoin de faire cela - semble facile d'obtenir une condition de course.

Merci,

Dw.

Questions connexes