0

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

4

2 回答 2

4

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

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

于 2012-09-14T20:40:21.277 回答
1

好吧,如果“黑盒”是指“核心位置框架”,他们是的,这就是它的创建位置。调用者(在这种情况下为核心位置)通常会创建这种对象并将其传递给您。不过,在一般情况下,这对您来说并不重要。

于 2012-09-14T20:40:06.093 回答