所以伙计们,我的问题是我在使用gui时无法与计时器一起工作。我的计时器在ViewController和代码中:
DispatchQueue.main.async {
Timer.scheduledTimer(timeInterval: 1, target: self.songView, selector: #selector(self.songView.update), userInfo: nil, repeats: true)
}
我也在外面尝试过派遣。但是,有一个歌曲视图,它的更新代码如下:
func update(){
DispatchQueue.main.async(execute: {
let theState = self.executeAppleScript(args: self.playerStateArgs, waitReturn: true)
let songName = self.executeAppleScript(args: self.songNameArgs, waitReturn: true)
let bandName = self.executeAppleScript(args: self.bandNameArgs, waitReturn: true)
let artworkUrl = self.executeAppleScript(args: self.artworkArgs, waitReturn: true)
self.songField.stringValue = songName
self.bandField.stringValue = bandName
let url: URL = URL.init(string: artworkUrl)!
self.albumCoverView.image = NSImage.init(contentsOf: url)
NSLog("\(songName)")
})
}
我也尝试了Dispatch队列之外的代码。非组合对我有用。定时器工作和更新功能每秒打印歌曲名称但是当我打开应用程序(菜单栏应用程序)gui时,更新功能停止并且没有发生日志操作。我尝试了很多东西,并在这里查看了所有问题。不幸的是,他们没有帮助我。提前致谢
编辑: 虽然gui关闭了:
当gui开启时:
关闭时,计时器正在工作。虽然开启,但事实并非如此。