setDelegate:self,它是如何工作的?

时间:2010-05-25 17:56:15

标签: iphone objective-c cocoa-touch

我对代表的工作方式有疑问。我的理解是代表们负责代表另一个对象完成某些任务。

locationManager = [[CLLocationManager alloc] init]; 
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];

我是否正确地认为在上面的示例代码中,CLLocationManager的实例是在新线程上创建的,以便它可以继续尝试查找所需的位置信息。当它完成任务(或遇到错误)时,它会使用位于self中的适当方法进行回调。

locationManager:didUpdateToLocation:fromLocation:

当事情发生时,基本上locationManager会向self发送消息(符合正确的委托协议)

欢呼加里

1 个答案:

答案 0 :(得分:6)

这大多是正确的。

  

在新线程上创建CLLocationManager的实例

不,实例是在您调用它的线程上创建的。您没有发布与线程相关的代码。当然,位置管理器在工作时避免阻塞线程。这可能是在内部使用后台线程,但您不知道或不关心。

  当事情发生时,

locationManager向self发送消息(符合正确的委托协议)