ฉันใช้ Google Maps ใน 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)")
        }
    }
    



mapView(_:didChange)คุณกำลังเยี่ยงอย่างprintงบไปยังคิวหลัก คุณไม่ได้อยู่ในคิวหลักหรือไม่? ถ้าไม่คุณต้องส่งanimateสายไปยังคิวหลักด้วย ฉันขอแนะนำให้แทรกบางส่วนdispatchPrecondition(condition: .onQueue(.main))ก่อนการอัปเดต UI เพื่อให้แน่ใจ