我对代表的工作方式有疑问。我的理解是代表们负责代表另一个对象完成某些任务。
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
我是否正确地认为在上面的示例代码中,CLLocationManager的实例是在新线程上创建的,以便它可以继续尝试查找所需的位置信息。当它完成任务(或遇到错误)时,它会使用位于self中的适当方法进行回调。
locationManager:didUpdateToLocation:fromLocation:
当事情发生时,基本上locationManager
会向self
发送消息(符合正确的委托协议)
答案 0 :(得分:6)
这大多是正确的。
在新线程上创建CLLocationManager的实例
不,实例是在您调用它的线程上创建的。您没有发布与线程相关的代码。当然,位置管理器在工作时避免阻塞线程。这可能是在内部使用后台线程,但您不知道或不关心。
当事情发生时,locationManager向self发送消息(符合正确的委托协议)
是