【问题标题】:ccTouchesMoved [touches anyObject] confusion?ccTouchesMoved [touches anyObject] 混乱?
【发布时间】:2009-06-03 14:31:32
【问题描述】:

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

}

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone


    【解决方案1】:

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

    [touches anyObject]

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

    NSTouch * touch = [touches anyObject];
    

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

    来自可可参考:

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

    - (id)anyObject

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

    【讨论】:

      【解决方案2】:

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

      NSTouch * touch = touches.anyObject;
      

      它的工作原理是一样的。

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 2010-12-04
        • 2011-05-05
        • 2018-05-30
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多