ccTouchesMoved [затрагивает anyObject] путаница? - PullRequest
1 голос
/ 03 июня 2009

Хорошо, так что я все еще пытаюсь ориентироваться в Objective-C, и я думал, что справился, но теперь я столкнулся с этим методом. Так что есть кое-что, что смущает меня, и я хотел бы получить подробное объяснение, если это возможно.

Первая строка: 'UITouch * touch = [затрагивает 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 ]

3 голосов
/ 03 июня 2009

anyObject в этом случае - метод для NSSet. Почему вы думаете, что это хеш-таблица? Он просто возвращает объект из множества - любой объект.

[touches anyObject]

вызывает anyObject метод для touches объекта (например, вызов метода на других языках) и возвращает объект из набора.

NSTouch * touch = [touches anyObject];

touch - указатель на один из объектов, хранящихся в touches (NSSet).

Из ссылки на Какао:

anyObject Возвращает один из объектов в приемнике, или ноль, если Приемник не содержит объектов.

- (id)anyObject

Возвращаемое значение Один из объектов в получатель, или ноль, если получатель не содержит объектов Предмет возвращается выбран на приемнике удобство - выбор не гарантированно будет случайным.

1 голос
/ 06 декабря 2011

anyObject на самом деле является свойством. Таким образом, вы можете использовать:

NSTouch * touch = touches.anyObject;

Будет работать так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...