ccTouchesMoved [触及任何对象]的混乱?

时间:2009-06-03 14:31:32

标签: iphone objective-c cocos2d-iphone

好的,所以我仍然试图在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;

}

2 个答案:

答案 0 :(得分:3)

在这种情况下,

anyObjectNSSet上的方法。为什么认为它是哈希表? 它只是从set中返回一个对象 - 任何对象。

[touches anyObject]

anyObject对象上调用touches方法(例如,用其他语言调用方法),然后从集合中返回一个对象。

NSTouch * touch = [touches anyObject];

touch是指向touchesNSSet)中存储的其中一个对象的指针。

来自Cocoa参考:

  

anyObject返回其中一个对象   在接收器中,如果是,则为零   接收器不包含任何物体。

     

- (id)anyObject

     

返回值中的一个对象   接收器,如果接收器,则为零   不包含任何对象。物体   返回是在接收者处选择的   方便 - 选择不是   保证是随机的。

答案 1 :(得分:1)

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

NSTouch * touch = touches.anyObject;

它的工作方式相同。