我是新手IOS开发人员,但我在Android开发方面拥有丰富的经验。我的问题是关于间隔特定计时器的创建和使用。
在android中我可以轻松制作这样的计时器:
timedTimer = new Timer();
timedTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
TimedMethod();
}
}, 0, 1000);
如果间隔为1000 MS,则在每个tick上调用TimedMethod()方法。我如何在IOS中实现类似的功能?
非常感谢您的阅读!任何帮助都会很棒! : - )
答案 0 :(得分:43)
您可以像这样使用重复的NSTimer
:
- (void) startTimer {
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(tick:)
userInfo:nil
repeats:YES];
}
- (void) tick:(NSTimer *) timer {
//do something here..
}
答案 1 :(得分:5)
使用
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
在您调用上述方法的同一个类中,创建一个名为timerCallback
的方法。每次计时器触发时都会调用此命令;每1000毫秒。
答案 2 :(得分:0)
使用Foundation Framework的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
}
答案 3 :(得分:0)
对于Swift:
使用下面的行创建一个计时器对象,每隔10秒调用一次上传方法。如果你得到没有实现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")
}