Swift locationManager.startMonitoring(针对:区域)错误?

Swift locationManager.startMonitoring(针对:区域)错误?,swift,location,locationmanager,Swift,Location,Locationmanager,我有一个奇怪的问题,我无法用我的生命去解决它 我正在创建一个监控后台区域的应用程序,但它似乎间歇性地不监控某些区域 (我已将位置权限设置为“始终”,并已启用后台位置功能) 它确实监视的区域工作正常,因此似乎与locationManager.startMonitoring(for:region) 该应用程序非常简单,每次添加或编辑区域时,它都会: 停止监视所有区域 然后,如果少于20个区域,则开始监视所有区域 否则,计算最近的20并开始监控它们 这是密码 let locationManager =

我有一个奇怪的问题,我无法用我的生命去解决它

我正在创建一个监控后台区域的应用程序,但它似乎间歇性地不监控某些区域 (我已将位置权限设置为“始终”,并已启用后台位置功能)

它确实监视的区域工作正常,因此似乎与
locationManager.startMonitoring(for:region)

该应用程序非常简单,每次添加或编辑区域时,它都会:

  • 停止监视所有区域
  • 然后,如果少于20个区域,则开始监视所有区域
  • 否则,计算最近的20并开始监控它们
  • 这是密码

    let locationManager = CLLocationManager()
    
    
    
    if(regionsArray.count <= 20{
    
        //monitor all regions
        monitorAllRegions()
    
    }else{
    
        //calculate closest 20 regions, and monitor them
    
        //do some stuff here.....
    }
    
    
    func monitorAllRegions(){
    
        //stop monitoring all regions
        stopMonitoringAllRegions()
    
        //start monitoring all regions in array
        for region in regionsArray{
            locationManager.startMonitoring(for: region)
        }
    
        //check all regions are monitored
        print(regionsArray.count)
        print(locationManager.monitoredRegions.count)
    
    }
    
    
    func stopMonitoringAllRegions() {
    
        //stop monitoring all monitored regions
        for region in locationManager.monitoredRegions {
            locationManager.stopMonitoring(for: region)
        }
    
    }
    
    let locationManager=CLLocationManager()
    if(regionsArray.count)