IOS - 创建和使用间隔定时器

19

我是一名新手 IOS 开发者,但在 Android 开发方面有丰富的经验。我的问题涉及创建和使用特定间隔计时器。

在 Android 中,我可以轻松地制作一个计时器,如下所示:

timedTimer = new Timer();
    timedTimer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {

            TimedMethod();
        }

    }, 0, 1000);

如果时间间隔为1000毫秒,并且在每个tick上调用TimedMethod()方法。我该如何在iOS中实现类似的功能?

非常感谢您的阅读!任何帮助都将不胜感激!:-)

4个回答

43

您可以像这样使用重复的NSTimer

- (void) startTimer {
   [NSTimer scheduledTimerWithTimeInterval:1 
                                    target:self 
                                  selector:@selector(tick:) 
                                  userInfo:nil
                                   repeats:YES];
}

- (void) tick:(NSTimer *) timer {
   //do something here..

}

5

使用

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];

在与您调用上述方法相同的类中,创建一个名为timerCallback的方法。每次计时器触发时,即每1000毫秒,都会调用此方法。

0

针对Swift:

使用以下代码创建一个计时器对象,该对象将每10秒调用上传方法。如果你遇到 does not implement methodSignatureForSelector 的问题,请将你的类扩展为NSObject类。有关更多信息,请阅读Object X of class Y does not implement methodSignatureForSelector in Swift

 timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "upload", userInfo: nil, repeats: true)

func upload() {
        print("hi")
    }

0
请使用Foundation框架中NSTimer.h文件中的以下方法:
语法:
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

用法:

#define kSyncTimerLength 4 //Declare globally
-(void) timerActivityFunction; //Declare in interface

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

-(void) timerActivityFunction {
     // perform timer task over-here   
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接