如何让BOOL在短时间内具有值,然后在Objective-C中进行更改

时间:2010-11-15 01:08:16

标签: objective-c timer boolean

我有一个我在if语句中使用的Bool。变量从NO开始,然后输入if语句,如果bool的值为NO,则执行该语句。然后我在if语句的末尾将值更改为YES,这样就不再执行标准的东西了。

我想要做的是以某种方式在最后改变该变量YES,但是在大约五秒之后将其改回NO。怎么办?

2 个答案:

答案 0 :(得分:2)

您可以使用NSTimer

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


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

另外,请确保此属性(someBoolean)为atomic

答案 1 :(得分:0)

也许设置如下:

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

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

并添加类似

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

到你的班级。但你确定你需要做到这一点 - 听起来容易受到竞争条件的影响。

谢谢,

DW传递。