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

fuz*_*oat 2 iphone cocoa-touch objective-c

我有一个关于代表如何工作的问题.我的理解是,代表们负责代表另一个对象完成某些任务.

locationManager = [[CLLocationManager alloc] init]; 
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
Run Code Online (Sandbox Code Playgroud)

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

locationManager:didUpdateToLocation:fromLocation:
Run Code Online (Sandbox Code Playgroud)

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

欢呼加里

Mik*_*lah 6

这大多是正确的.

CLLocationManager的实例是在新线程上创建的

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

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

是.