我尝试执行一次位置服务。从另一个对象类调用此LocationService,它将把位置信息添加到参数中。所有这些都是一个对象。
问题是,当我初始化对象时,所有内容都填充了较少的位置数据,位置数据将在几毫秒后填充。
我需要等到执行回调之后,才能成功生成完整的对象,然后再使用它
因此,考虑到下一个“ LocationService”类
public class LocationService: NSObject, CLLocationManagerDelegate{
let manager = CLLocationManager()
var locationCallback: ((CLLocation?) -> Void)!
var locationServicesEnabled = false
var didFailWithError: Error?
public func run(callback: @escaping (CLLocation?) -> Void) {
locationCallback = callback
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
manager.requestWhenInUseAuthorization()
locationServicesEnabled = CLLocationManager.locationServicesEnabled()
if locationServicesEnabled {
manager.startUpdatingLocation()
}else {
locationCallback(nil)
}
}
public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
locationCallback(locations.last!)
manager.stopUpdatingLocation()
}
public func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
didFailWithError = error
locationCallback(nil)
manager.stopUpdatingLocation()
}
deinit {
manager.stopUpdatingLocation()
}
}
并且像这样从对象类中被称为[]:let getLocation = LocationService()
getLocation.run {
if let location = $0 {
//get location parameters
}}
我尝试执行一次位置服务。从另一个对象类调用此LocationService,它将把位置信息添加到参数中。所有这些将是一个对象。 ...我如何在正在调用它的类中等待,直到执行回调?我应该使用getLocation.performSelector()吗?怎么样?