0

一部のObjectiveCプロトコルメソッドで引数として渡されるオブジェクトの一部がどこで作成されているのか、少しわかりません。たとえば、オブジェクトの場所を更新するCLLocationManagerDelegateのプロトコルメソッドの1つである以下のコードを見てみましょう。

- (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 に答える