在Objective-C中,实现每隔几秒重复执行一次方法可以通过使用NSTimer
类来实现。NSTimer
是苹果官方提供的一种定时器,可以方便地实现定时触发和循环执行。
以下是使用NSTimer
实现每隔几秒重复执行一次方法的步骤:
NSObject
,并实现NSTimer
的回调方法。@interface MyTimer : NSObject
@end
@implementation MyTimer
- (void)timerDidFire:(NSTimer *)timer {
// 每次触发时,将当前时间与上一次触发的时间进行比较,判断是否已经过了指定的时间间隔
NSDate *now = [NSDate date];
NSDate *lastFire = [self.timer.userInfo[0] objectForKey:@"lastFire"];
NSTimeInterval interval = [now timeIntervalSinceDate:lastFire];
if (interval >= self.interval) {
// 执行需要重复执行的方法
[self.timer invalidate];
self.timer = nil;
[self performSelector:@selector(timerDidFire:) withObject:nil afterDelay:self.interval];
self.interval = [self.timer.userInfo[0] objectForKey:@"interval"] ?: 0;
self.lastFire = now;
}
}
@end
@interface MyClass : NSObject
@end
@implementation MyClass
- (void)startTimer {
MyTimer *timer = [[MyTimer alloc] init];
timer.interval = 3.0; // 设置每隔3秒重复执行一次方法
timer.lastFire = [NSDate date];
timer.timer = [NSTimer scheduledTimerWithTimeInterval:timer.interval target:self selector:@selector(repeatedMethod) userInfo:nil repeats:YES];
}
- (void)repeatedMethod {
NSLog(@"repeatedMethod");
}
@end
startTimer
方法。int main(int argc, const char * argv[]) {
@autoreleasepool {
MyClass *obj = [[MyClass alloc] init];
[obj startTimer];
}
return 0;
}
这样就可以实现Objective-C中每隔几秒重复一次方法的功能。上述示例中,MyTimer
类可以通过一些调整,升级为更通用的定时器类,以适应更多的使用场景。
领取专属 10元无门槛券
手把手带您无忧上云