Modifier
Il y a une assez longue discussion dans les commentaires à cette réponse, qui a raffiné la question initiale. Je vais poster les points saillants ici pour aider les autres qui peuvent avoir des questions similaires.
Elle se réduit à une confusion entre les deux méthodes,
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
La première méthode est une méthode d'instance de UITableView
qui renvoie un UITableViewCell
pour un trajet d'index donné. Cette méthode est appelée sur un objet de vue de table.
La deuxième méthode est une méthode de source de données déclarée dans le protocole UITableViewDataSource
qui demande un UITableViewCell
pour un chemin d'index donné.
La différence importante est que la première est appelée sur une vue de table instance par une classe qui peut vouloir une référence à une cellule de tableau, et le second est appelé par une vue de table par exemple sur une classe de source de données pour demander une cellule à afficher au chemin d'index donné.
J'espère que cette aide. La plupart des protocoles delegate/datasource dans Cocoa/Cocoa Touch suivent ce modèle. C'est une façon de dire quelque chose comme "cette vue de table veut ces données". Considérons quelque chose comme un objet de champ de texte.
Vous pouvez avoir une interface avec de nombreux objets de champ de texte qui rapportent tous au même délégué pour définir leur comportement pour certaines actions. En se passant comme un argument dans une méthode au délégué, le délégué sait quel champ de texte appelle la méthode.
Je ne suis pas sûr de bien comprendre ce que vous demandez, mais c'est la façon dont les objets informent leurs délégués/datasources de l'objet exact qui envoie la méthode. Dans le cas de UITableView, il est moins évident car il n'y a souvent qu'une seule vue de table par contrôleur de vue de table, mais l'exemple de champ de texte que j'ai donné devrait souligner ce fait.
Dernier ajout, à partir de l'affiche de la question ... Ok, c'était juste une confusion de type Java sur un aspect d'Objective-C: les messages ne sont pas comparables aux méthodes Java ou aux fonctions C. Le premier paramètre de message ne devrait pas être assimilé à ce à quoi nous sommes habitués: c'est le "nom de la fonction". En d'autres termes, à l'intérieur d'un message Objective-C: "tous les paramètres sont égaux" en terme d'importance. –