问候!!
现在我正在做以下代码:
BOOL bJobDone = NO ;
bBrickDropDone = NO ; //global var here !!
NSTimer* timer = nil ;
while(bJobDone==NO)
{
if(timer == nil)
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.3
target:self
selector:@selector(dropBrick:)
userInfo:nil
repeats:YES];
}
if(bBrickDropDone==YES)
{
bBrickDropDone = NO ;
[timer invalidate] ;
timer = nil ;
if([self MarkBrickBomb]==YES)
{
bJobDone = NO ;
[self dealBomb] ;
if([self AllClean]==YES)
{
bJobDone = YES ;
igameidx = igameidx + 1 ;
}
}else
{
bJobDone = YES ;
}
}//if(bBrickDropDone==YES)
}//while bJobDone==NO
如你所见,定时器调用dropBrick函数一次0.3秒, 如果bBrickDropDone最终= YES(如果发生某事,dropBrick函数将此修改为YES) 它将处理另一个函数MarkBrickBomb并继续直到bJobDone = YES,打破循环!!
我认为我的代码很糟糕,我不应该在while循环中检查bBrickDropDone标志, 因为它效率不高,而且成本资源也很多!!
我需要一个计时器才能获得一个动画UIImageView开关,买还是不喜欢 在while循环中检查完成标志(我觉得这不好),所以我能做些什么 在这种情况下 ?我可以得到一个提示吗?
对不起我的英语!!
答案 0 :(得分:1)
计时器永远不会在bJobDone == NO时触发,这是因为NSTimers被添加到NSRunLoop并且只能在等待事件时触发。