アプリケーションで CADisplayLink をタイマーとして使用しています。私のアプリはCADisplayLinkの精度/精度に大きく依存しているため、CADisplayLinkを使用しています。私の場合、NSTimerは適切な代替品ではありません。
問題は、アプリケーションがバックグラウンドにあるときに、CADisplayLink を起動してそのセレクターを呼び出す必要がある場合があることです。これは可能ですか?CADisplayLink がアプリケーション UI のリフレッシュ レートにリンクされていることを理解しています。これは、アプリがバックグラウンドにある場合、UI がないため、この場合 CADisplayLink を使用できないということですか? または、CADisplayLink を追加する実行ループを変更するか、引数を変更することで、CADisplayLink を使用することはできforMode
ますか? または、おそらくGCDのトリック/回避策を使用していますか?
注: 私のアプリは AudioPlayer を使用しているため、バックグラウンド機能を有効にしています。バックグラウンドで他のコードを実行できます。テストのために、CADisplayLink を NSTimer に切り替えたところ、NSTimer が起動し、必要に応じてセレクターを呼び出しました。CADisplayLink を起動させることができず、バックグラウンドで使用する可能性に関する決定的なドキュメントが見つかりません
表示リンクに関する現在のコードは次のとおりです。
func beginTimer(){
dispatch_async(dispatch_get_main_queue()){
self.displayLink = CADisplayLink(target: self, selector: "update")
self.displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
}
}
func update(){
delegate?.executeCallback
}