我在 viewController 中有一个 LocationManager,我想从中监听用户位置的重大变化。然后,当locationManager:didUpdateToLocation:fromLocation:触发时,我通过调用一个自定义对象来执行一些数据处理,该对象是同一个 viewController 的私有属性并且始终是同一个对象:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
if (dataProcessor == nil) {
dataProcessor = [[DataProcessor alloc] initWithDefaultValues];
}
[dataProcessor processData:someData];
}
反过来,由dataProcessor调用的方法稍后会调用另一个 self 方法,并且此dataProcessor执行的整个处理可能在locationManager:didUpdateToLocation:fromLocation:再次到达之前尚未完成,然后另一个[dataProcessor processData:someData]调用制作。
我的问题是,在这种情况下应该是什么行为?作为被调用的同一个对象,第二个调用是否排队等待第一个调用完成?或者是否可以在从第一个processData调用调用的不同方法的调用之间执行第二个调用?我不知道如何在 Xcode 中查看和调试它。我需要确保按照位置管理器通知新位置的顺序执行和完成数据处理。我目前没有使用我创建的任何线程,也没有使用 GCD 队列,也没有使用信号量,因为我不确定那里到底发生了什么,我不知道我是否需要这些功能中的任何一个。
非常感谢