1

さて、私はまだObjective-Cで自分の方位を取得しようとしているので、それをやめたと思っていましたが、今はこの方法に出くわしました。ですから、できれば詳しい説明をお願いしたいのですが、戸惑うことがあります。

最初の行:'UITouch * touch = [touches anyObject];'、私の理解では、anyObjectはハッシュテーブルですか?しかし、このコンテキストでどのように定義できますか?で定義されている場所がわかりません。NSSetに属していることはわかっていますが、このコンテキストでのスコープと混同されています...

- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView: [touch view]];

    point =  [[Director sharedDirector] convertCoordinate: point];
    NSLog(@"ccTouchesMoved x=%f y=%f", point.x, point.y);
    return YES;

}

4

2 に答える 2

3

anyObjectこの場合はのメソッドNSSetです。なぜそれがハッシュテーブルだと思うのですか?セットからオブジェクトを返すだけです-任意のオブジェクト。

[touches anyObject]

anyObjectオブジェクトのメソッドを呼び出しtouches(たとえば、他の言語のメソッド呼び出し)、セットからオブジェクトを返します。

NSTouch * touch = [touches anyObject];

touchtouches( )に格納されているオブジェクトの1つへのポインタNSSetです。

ココアリファレンスから:

anyObjectレシーバー内のオブジェクトの1つを返します。レシーバーにオブジェクトが含まれていない場合は、nilを返します。

- (id)anyObject

戻り値レシーバー内のオブジェクトの1つ、またはレシーバーにオブジェクトが含まれていない場合はnil。返されるオブジェクトは、受信者の都合に合わせて選択されます。選択がランダムであるとは限りません。

于 2009-06-03T14:45:47.983 に答える
1

anyObjectは実際にはプロパティです。したがって、次を使用できます。

NSTouch * touch = touches.anyObject;

同じように動作します。

于 2011-12-06T00:42:59.087 に答える