メニューバーのアプリケーションがあり、どこにも(コード変更なし)動作しなくなりました。奇妙なことに、私がそれを選択した後、または私がシステムキー(音量、明るさ、iTunesなど)を使うと、アプリケーションは実行を続けます。私のコードはGCDを使って行動を管理しています。これをデバッグして何が起こっているのか見てみましょうか?私の混乱は、システムキー(ボリュームレベル、輝度レベルを表示するウィンドウをポップアップする)を使用することで私のソフトウェアが実行を継続する理由です。メニューバーのアプリケーションでGCDがハングアップする
DispatchQueue.main.async() { doSomething() }
func doSomething() {
//run a bunch of things in a background process
//so far works ok
let fooFrame = NSMakeRect(0, 0, 100, 100)
print("tag1") //this prints just fine
DispqtchQueue.main.sync() {
print("tag2") //this doesn't print and doesn't execute until I click on the app or use the volume keys.
//run code to update UI works fine once I use volume keys (no idea why)
self.window.frame = fooFrame
}
}
また、メッセージや例外が発生していません。ちょうどアプリがフリーズします。また、複数のディスプレイがあり、メニューバーがアクティブになる2番目のディスプレイをアクティブにすると、プロセスがやり直してすべてが正常であることに気付きました。
(1)私はあなたに重要なコードの部分を与えています。非同期で実行され、同期でいくつかのブロックを実行しようとする機能があります。 (2)非同期呼び出しがまったく同じ場所でハングします。 – MAH
"私はあなたに、私が重要だと思うコードの部分を教えています。"私はそれを知っています。私が言っているのは、あなたが間違っているということです。あなたが何を重要視していたのか分かっていれば、あなた自身の問題を解決できました。 – matt