好的,所以我仍然试图在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;
}
答案 0 :(得分:3)
anyObject
是NSSet
上的方法。为什么认为它是哈希表?
它只是从set中返回一个对象 - 任何对象。
[touches anyObject]
在anyObject
对象上调用touches
方法(例如,用其他语言调用方法),然后从集合中返回一个对象。
NSTouch * touch = [touches anyObject];
touch
是指向touches
(NSSet
)中存储的其中一个对象的指针。
来自Cocoa参考:
anyObject返回其中一个对象 在接收器中,如果是,则为零 接收器不包含任何物体。
- (id)anyObject
返回值中的一个对象 接收器,如果接收器,则为零 不包含任何对象。物体 返回是在接收者处选择的 方便 - 选择不是 保证是随机的。
答案 1 :(得分:1)
anyObject实际上是一个属性。所以你可以使用:
NSTouch * touch = touches.anyObject;
它的工作方式相同。