[解決済み] メインスレッドチェッカー バックグラウンドスレッドで呼び出された UI API: -[UIApplication applicationState].
2022-02-14 02:36:48
質問
Xcode 9 beta、iOS 11でグーグルマップを使用しています。
以下のようにログに出力されるエラーが発生しています。
メインスレッドチェッカーです。バックグラウンドスレッドで呼び出されたUI API: -[UIApplication applicationState] pid: 4442, tid: 837820、スレッド名:com.google.Maps.LabelingBehavior、キュー名:com.apple.root.default-qos.overcommit、QoS: 21
私のコードでは、メインスレッドからインターフェース要素を変更していないことはほぼ確実なので、なぜこのようなことが起こるのでしょうか。
override func viewDidLoad() {
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
viewMap.delegate = self
let camera = GMSCameraPosition.camera(withLatitude: 53.7931183329367, longitude: -1.53649874031544, zoom: 17.0)
viewMap.animate(to: camera)
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
}
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
if(moving > 1){
moving = 1
UIView.animate(withDuration: 0.5, delay: 0, animations: {
self.topBarConstraint.constant = self.topBarConstraint.constant + (self.topBar.bounds.height / 2)
self.bottomHalfConstraint.constant = self.bottomHalfConstraint.constant + (self.topBar.bounds.height / 2)
self.view.layoutIfNeeded()
}, completion: nil)
}
moving = 1
}
// Camera change Position this methods will call every time
func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
moving = moving + 1
if(moving == 2){
UIView.animate(withDuration: 0.5, delay: 0, animations: {
self.topBarConstraint.constant = self.topBarConstraint.constant - (self.topBar.bounds.height / 2)
self.bottomHalfConstraint.constant = self.bottomHalfConstraint.constant - (self.topBar.bounds.height / 2)
self.view.layoutIfNeeded()
}, completion: nil)
}
DispatchQueue.main.async {
print("Moving: \(moving) Latitude: \(self.viewMap.camera.target.latitude)")
print("Moving: \(moving) Longitude: \(self.viewMap.camera.target.longitude)")
}
}
解決方法は?
まず、googleマップとui変更の呼び出しがメインスレッドから行われていることを確認します。
を有効にすることができます。 スレッドサニタイザー オプションを使用します。
以下のようにすると、問題のある行をメインスレッドに置くことができます。
DispatchQueue.main.async {
//Do UI Code here.
//Call Google maps methods.
}
また、現在のgoogleマップのバージョンを更新してください。グーグルマップはスレッドチェッカーのために何度か更新が必要でした。
なぜこのようなことが起こるのでしょうか? アサーション エッジケースに対応するために、Googleはポッドを更新する必要がありました。
関連
-
[解決済み] テスト
-
[解決済み] Swift presentViewController
-
[解決済み] iPhone Simulator.appと一緒にXcodeも外付けハードディスクにインストールできますか?
-
[解決済み] Swiftでbase64StringをStringに変換する方法とは?
-
[解決済み] swiftにおけるconvenience initとinitの違いは何ですか、より良い明示的な例
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] Swiftでコアデータを日付(時間だけでなく)でソートする
-
[解決済み] swiftの"? "の意味は何ですか?[重複している]。
-
[解決済み】「このアプリケーションはバックグラウンドのスレッドからオートレイアウトエンジンを変更しています」エラーが発生する?
-
[解決済み】UIViewControllerの最上位機種を取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 型の不変値に変異型メンバを使用することはできません。
-
[解決済み] Swift stdlib ツール エラー
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] Swift: print() vs println() vs NSLog()
-
[解決済み] プログラミング言語Swiftで文字列のn文字目を取得する
-
[解決済み】Xcode 6 Beta 4でアプリを実行すると「表示権限がないため、ファイル "MyApp.app" を開くことができません。
-
[解決済み】解決方法。iOS 13.0で'keyWindow'が非推奨になりました。
-
[解決済み】swift 4でenumをDecodableにするにはどうすればいいですか?
-
[解決済み】SwiftでFloatをIntに変換する。
-
[解決済み】ReactiveCocoaとRxSwiftの比較 - 長所と短所?