2010-03-04 5 views
1

Je vais avoir un problème avec ceci:objectif de base - thats C été me donner quelques problèmes

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u { 

Je ne suis pas vraiment sûr de ce qui se passe ici, est la méthode initWithName étant passé un argument de n qui est en train d'être casté à un NSString? et est également passé un argument d qui est moulé à un NSString aussi?

Quel est le but d'avoir les lettres'n 'et' l 'là-bas? Ont-ils besoin d'être définis autrement où ou sont-ils juste des noms d'arguments arbitraires pour nous aider à nous rappeler quels sont les arguments?

Est-ce une méthode ou trois combinés? Les méthodes 'description:' et 'url' sont-elles aussi? Désolé pour cette question étant si basique, je suis juste un peu confus par celui-ci.

Répondre

6

C'est une méthode avec le nom "initWithName: Description: url:" qui prend des arguments nommés n, d et u, tous de type NSString*. La syntaxe Objective-C scinde le nom de la méthode (appelé "sélecteur" en termes Objective-C) à chaque colon et vous y placez un argument correspondant. Le but est de faire lire le code plus naturellement. Je dirai que n, d et u sont des noms divins pour les arguments.

Vous pourriez être intéressé par Apple The Objective-C Programming Language. C'est très court, mais parvient toujours à décrire à la fois le langage et sa philosophie.

+2

+1 "noms divins pour les arguments" –

+0

Merci beaucoup pour toutes les réponses, cela a beaucoup plus de sens maintenant. J'apprécie vraiment votre temps :) – Dave

2

Parfois, il est plus facile de comprendre quand certains espaces supplémentaires est ajouté:

-(id)initWithName:(NSString *)n 
     description:(NSString *)d 
       url:(NSString *)u 
{ 
    ... 

Fondamentalement, cette méthode qui prend trois arguments, tous sont NSString arguments, et ils sont appelés n, d et u respectivement. Il est important de noter que le signe deux-points fait partie du nom de la méthode, mais les types d'arguments et les noms d'arguments ne font pas partie du nom. Le nom de la méthode est:

initWithName:description:url: 
2

Il est une méthode. C'est ainsi que objective-c transmet plusieurs variables à une méthode. Si vous êtes plus familier avec C, cela ressemblerait plus à: initWithName(n,d,u). Cependant, dans l'objectif-c, plus d'informations sont données sur chaque paramètre dans un appel de méthode. Je pense que vous trouverez que vous aimerez cela parce que cela vous aide à comprendre le but de chaque paramètre.