在协议方法中创建的参数传递的某些对象在哪里创建?

时间:2012-09-14 20:36:12

标签: objective-c cllocationmanager

我有点不清楚在某些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对象提供给方法。但是这样的对象在哪里创建?这一切似乎都发生在某个黑盒子里,然后自动传递给方法......或者我错过了什么?

1 个答案:

答案 0 :(得分:4)

黑盒子正是该物体的来源。你不知道,也不在乎。 CLLocationManager的内部工作方式是私有的,因此应该被认为是易变的和不可知的。

一般来说,只要在方法范围内正确处理参数,就不应该关注参数的来源。