2009-06-03 40 views
1

好的,我仍然试图在Objective-C中找到自己的方向,我认为我已经完成了它,但现在我遇到了这种方法。所以有些事情让我感到困惑,如果可能的话,我想详细解释一下。第一行:'UITouch * touch = [touches anyObject];',现在对我的理解anyObject是一个散列表?但是,如何在这种情况下定义它?我不明白的地方时,我知道它是属于NSSet中定义的,但我很困惑,在此背景下,范围...ccTouchesMoved [触及anyObject]混淆?

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

} 

回答

3

anyObject在这种情况下是NSSet的方法。为什么认为它是一个哈希表? 它只是从set中返回一个对象 - 任何对象。

[touches anyObject]

调用上touches对象(例如,在其他语言的一个方法调用)anyObject方法,它从所述组返回一个对象。

NSTouch * touch = [touches anyObject]; 

touch是指向存储在touchesNSSet)的对象之一。

从可可参考:

anyObject返回在接收器或零的对象 之一如果 接收机不包含任何对象。

- (id)anyObject

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

+0

谢谢,我现在看到它...不知道为什么我认为它是一个散列表... – emalamisura 2009-06-03 15:05:01

1

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

NSTouch * touch = touches.anyObject; 

它的工作原理是一样的。