我有一个 void 函数,它只是NSLog(@"Call me");
在它的身体里。
我每隔十秒钟就会在我的视图中调用它
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES];
但我希望它在 5 次迭代后停止它。然而它会走向无穷大。我怎样才能做到这一点?
我有一个 void 函数,它只是NSLog(@"Call me");
在它的身体里。
我每隔十秒钟就会在我的视图中调用它
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES];
但我希望它在 5 次迭代后停止它。然而它会走向无穷大。我怎样才能做到这一点?
您应该使用一个计数器,每次调用您的方法时将其递增,计数为 5,然后使用下面的代码使您的计时器无效。
[timer invalidate];
1) 保留一个全局变量,从 0 递增到 5。
int i = 0;
2)在你的定时器函数中增加这个变量..
-(void) yourFunction:(NSTimer*)timer{
//do your action
i++;
if(i == 5){
[timer invalidate];
}
}
3) 创建定时器时
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(yourMethod:) // <== see the ':', indicates your function takes an argument
userInfo:nil
repeats:YES];
要从当前循环中销毁计时器,您应该调用[timer invalidate];
要确定五次出现,您需要维护一个变量并每次增加其计数。如果等于 5,则调用 invalidate 方法。
首先你需要声明一个int
并声明你的NSTimer *timer
,所以我们可以阻止它:
@interface AppDelegate : UIViewController {
int myInt;
NSTimer *timer;
}
要开始,NSTimer
您只需要更改一些代码:
timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES];
在您的 void 函数中,您可以进行验证以检查代码是否在 5 次迭代后运行:
- (void)myVoid{
NSLog(@"Call Me");
if (myInt == 5) {
[timer invalidate];
timer = nil;
}
myInt++;
}