私は、UIViewControllerのビューの一番上にビューを追加するだけのプロジェクトでバグがあります。卓越した何も、このようなものは:UI操作がメインスレッド上で実行されているにもかかわらず、UIグリッチが発生する
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.displayEmailNotificationsIfNeeded()
}
バグが何らかの理由で自動レイアウトが正しく動作し、上部にそれを追加しませんが、周り60pt必要よりも低いということではありません。ナビゲーション・バーとステータス・バーを含めるために、手動でトップ・コンストレインを調整して〜60ptが得られると思われますが、それは本当に重要ではありません。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print("is main thread: ", NSThread.isMainThread())
dispatch_async(dispatch_get_main_queue(), {() -> Void in
print("is main thread inside block: ", NSThread.isMainThread())
self.displayEmailNotificationsIfNeeded()
})
}
print文は両方のケースのためtrue
を返す:
事実は、私はこのように、メインキューに明示的にメソッドを実行する場合、問題が消えていることです。それは本当にひどいことではありませんが、私はこれを引き起こす原因を理解したいだけです。この状況をデバッグして、主なスレッドで明示的に操作を実行する理由がいくつかのUIの不具合を修正する方法はありますか?