目标
来自Android的示例就像这样
Thread thread = new Thread() {
@Override
public void run() {
while (recordingState == STATE.RECORDING) {
System.out.println("Yay! we are still recording")
try {
Thread.sleep(1000 / 12); //12 fps refresh rate
} catch (InterruptedException ignored) {
}
}
}
};
thread.start();
此代码每秒运行12帧,直到我们正在录制。
iOS (Swift)上的类似内容可以通过使用计时器来实现(按特定时间间隔安排)但是,有没有更类似于上述方法?
注意:我不了解Objective-C所以,如果你能在Swift中尝试回答,不过欢迎所有答案。
答案 0 :(得分:1)
在Objective C上以无限模式运行计时器的代码
NSTimer *timerRefresh;
timerRefresh = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timerFired) userInfo:nil repeats:YES];
-(void) timerFired{
}
答案 1 :(得分:1)
DispatchQueue.global(qos: .background).async {
while self.recording{
DispatchQueue.main.async {
print(":::> \(self.recorder?.currentTime)")
}
usleep(useconds_t(1e+6) / 30) // sleep in milliseconds 30 fps
}
}
该死的!我自己找到了答案。同样的方法在这里工作。 sleep()
函数将参数设置为Seconds,而是使用usleep()
。