首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Objective C中每隔几秒重复一次方法

在Objective-C中,实现每隔几秒重复执行一次方法可以通过使用NSTimer类来实现。NSTimer是苹果官方提供的一种定时器,可以方便地实现定时触发和循环执行。

以下是使用NSTimer实现每隔几秒重复执行一次方法的步骤:

  1. 首先,需要创建一个类,继承自NSObject,并实现NSTimer的回调方法。
代码语言:objective-c
复制
@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
  1. 创建该类的实例,并设置需要重复执行的方法和定时器的延迟时间。
代码语言:objective-c
复制
@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
  1. 在需要启动定时器的类中,调用startTimer方法。
代码语言:objective-c
复制
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyClass *obj = [[MyClass alloc] init];
        [obj startTimer];
    }
    return 0;
}

这样就可以实现Objective-C中每隔几秒重复一次方法的功能。上述示例中,MyTimer类可以通过一些调整,升级为更通用的定时器类,以适应更多的使用场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js防抖和节流实现

1. 防抖(debounce):触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间 举例:就好像在百度搜索时,每次输入之后都有联想词弹出,这个控制联想词的方法就不可能是输入框内容一改变就触发的,他一定是当你结束输入一段时间之后才会触发。  2.节流(throttle):高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率 举例:预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。就好像你在淘宝抢购某一件限量热卖商品时,你不断点刷新点购买,可是总有一段时间你点上是没有效果,这里就用到了节流,就是怕点的太快导致系统出现bug。

02
领券