我正在尝试使用Swift作为CLI工具的语言,它应该用作简单的Web爬虫。
在我的main
文件中,我创建了一个APIFetcher
类的实例。在APIFetcher
I instantiate an instance of Timer
with the given time interval的初始化中。一旦我调用startQuerying
方法,它就会将Timer
添加到主运行循环中 - 此时我希望调用performTask
方法,但事实并非如此。我做错了什么?
@available(OSX 10.12, *)
public init(with interval: TimeInterval) {
self.timer = Timer(timeInterval: interval, repeats: true) { _ in
self.performTask()
}
}
deinit {
self.timer?.invalidate()
self.timer = nil
}
public func startQuerying(_ url: URL) {
guard let unwrappedTimer = self.timer else { return }
RunLoop.main.add(unwrappedTimer, forMode: .defaultRunLoopMode)
}
func performTask() {
print("Performed scheduled task")
}
答案 0 :(得分:1)
感谢vadian你是对的,我添加了计时器来运行循环,但从未实际启动它。这解决了整个问题:
RunLoop.main.add(unwrappedTimer, forMode: .defaultRunLoopMode)
RunLoop.main.run()