2011-08-10 9 views
19

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

在机器人我可以很容易使这样的计时器:

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

      TimedMethod(); 
     } 

    }, 0, 1000); 

当间隔为1000 MS,并且该方法TimedMethod()被调用每个蜱。我如何去执行IOS中的类似功能?

非常感谢您的阅读!任何帮助都会很棒! :-)

回答

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

这是错误的。 'scheduledTimerWithTimeInterval:'假定它的第一个参数是*秒*,而不是毫秒。 –

+1

哎呀。感谢您纠正这一点。答复修正。 –

0

低于目前使用的方法在基础框架

语法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 
} 
0

对于斯威夫特:

创建一个定时器使用下面的行来调用upl的对象每10秒钟一次。如果你得到没有实现方法SignatureForSelector用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") 
    }