2009-06-03 6 views
1

Ok donc je suis toujours en train d'essayer de me repérer en Objective-C et je pensais que je l'avais perdu mais maintenant je suis tombé sur cette méthode. Donc, il y a quelque chose qui me rend confus que je voudrais une explication détaillée sur si possible.ccTouchesMoved [touche anyObject] confusion?

La première ligne: 'UITouch * touch = [touche n'importe quel objet];', maintenant à mon sens anyObject est une hashtable? Mais comment pouvez-vous le définir dans ce contexte? Je ne comprends pas où son sens à, je sais qu'il appartient à NSSet, mais je suis confondu avec le champ d'application dans ce contexte ...

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

} 

Répondre

3

anyObject dans ce cas est une méthode sur NSSet. Pourquoi pensez-vous que c'est une hashtable? Il retourne simplement un objet de set - n'importe quel objet.

[touches anyObject]

invoque méthode anyObjecttouches sur l'objet (par exemple un appel de méthode dans les autres langues) et il retourne un objet de l'ensemble.

NSTouch * touch = [touches anyObject]; 

touch est un pointeur vers l'un des objets stockés dans touches (NSSet).

De référence Cocoa:

anyObject Renvoie l'un des objets dans le récepteur, ou nul si le récepteur ne contient aucun objet.

- (id)anyObject

Valeur de retour L'un des objets dans le récepteur , ou nul si le récepteur ne contient aucun objet. L'objet renvoyé est choisi à la convenancedu destinataire - la sélection n'est pas garantie aléatoire.

+0

Merci, je le vois maintenant ... Aucune idée de pourquoi je pensais que c'était une hashtable ... – emalamisura

1

anyObject est une propriété. Ainsi, vous pouvez utiliser:

NSTouch * touch = touches.anyObject; 

Il fonctionnera de la même manière.