我有点不清楚在某些Objective C协议方法中创建的某些对象作为参数传递的位置。让我们看看下面的代码示例,它是CLLocationManagerDelegate的协议方法之一,用于更新对象的位置:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"%@", newLocation);
NSTimeInterval t = [[newLocation timestamp] timeIntervalSinceNow];
if (t < -180) {
return;
}
[self foundLocation:newLocation];
}
我在这里的问题是关于newLocation。根据Apple文档,newLocation由CLLocationManager对象提供给方法。但是这样的对象在哪里创建?这一切似乎都发生在某个黑盒子里,然后自动传递给方法......或者我错过了什么?
答案 0 :(得分:4)
黑盒子正是该物体的来源。你不知道,也不在乎。 CLLocationManager的内部工作方式是私有的,因此应该被认为是易变的和不可知的。
一般来说,只要在方法范围内正确处理参数,就不应该关注参数的来源。