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];

touch是指向存储在touches( NSSet) 中的对象之一的指针。

来自可可参考:

anyObject 返回接收器中的对象之一,如果接收器不包含任何对象,则返回 nil。

- (id)anyObject

返回值 接收器中的对象之一,如果接收器不包含任何对象,则返回 nil。返回的对象是在接收者方便时选择的——不保证选择是随机的。

于 2009-06-03T14:45:47.983 回答
1

anyObject 实际上是一个属性。所以你可以使用:

NSTouch * touch = touches.anyObject;

它的工作方式相同。

于 2011-12-06T00:42:59.087 回答