Question

Eh bien, je l'ai commencé avec la programmation iPod / iPhone en utilisant Head First développement iPhone (O'reilly) et je tape le code du livre. Il y a deux problèmes, on est des programmes liés et l'autre non.

  • Je ne comprends pas le format des méthodes Objective-C. Je reçois un peu d'erreurs maintenant, à partir du code source du livre. Ce qui mène moi à mon prochain numéro.

  • Une partie du code est bogué. Je pense que oui parce que je ne pouvais pas obtenir le code à exécuter sans le modifier. Le livre a quelques fautes de frappe dans le texte car il est une première édition et ainsi de suite, mais il pourrait me « fixer » le code doivent faire?

... Où puis-je en savoir plus sur les méthodes Objective-C et la façon dont ils travaillent en termes de structure et où le type de retour et les arguments vont?

Pour ceux qui ont le livre, je suis au milieu de l'application InstaTweet vers le début.

Merci.

Était-ce utile?

La solution

Peut-être une comparaison entre un « c-comme » langue et obj-c serait utile - nous allons aller avec Java. Imaginez une classe Rectangle avec une méthode setBackgroundColor. Nous supposons que nous avons une instance de rectangle appelé rect.

En Java, la signature de la méthode serait probablement

public void setBackgroundColor(int r, int g, int b) { ... }

Objective-C, les arguments font partie de la signature de la méthode, de sorte qu'il peut être

- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;

Le « - » signifie qu'il est une méthode d'instance de la classe Rectangle. (Void) est le type de retour de la méthode. Viennent ensuite les arguments. Chaque colon définit un argument qui est tapé (chaque arg est (int) dans cet exemple).

Comparons appeler ces méthodes. Java:

rect.setBackgroundColor(255, 255, 0);

Obj-c:

[rect setBackgroundColorWithRed:255 green:255 blue:0];

Beaucoup de gens trébuchent sur la syntaxe de obj-c - vous n'êtes pas seul. Espérons que cette comparaison va rendre les choses plus claires. Il illustre aussi une force linguistique objective-c: au moment de l'appel, il est clair que vos arguments sont. Si je lis le code et vu la méthode Java appelée, il ne serait pas évident que les arguments sont rouge, bleu et vert. Dans obj-c, il est douloureusement clair que nous établissons des valeurs de couleur. Certes, la plupart des développeurs peuvent deviner ce que les trois arguments à une méthode de setColor sont, mais des méthodes plus complexes se prêter à confusion. Voici une méthode plus complexe défini en Java et Objective-C:

static Dog createDog(  String name
                     , int age
                     , boolean isNeutered
                     , String ownerName
                    );
+ (Dog *)createDogNamed:(NSString *)name 
     age:     (int)        age 
     neutered:(BOOL)       isNeutered 
     owner:   (NSString *) owner;

A l'heure d'appel:

Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];

Objective-C est plus bavard, mais beaucoup plus facile à lire. Dans l'exemple Java, ce n'est pas vraiment clair ce que les « 2 » et arguments « vrais » signifient. Objective-c se lit presque comme l'anglais.

D'autres personnes ont posté des liens vers plus en profondeur des guides, mais j'espère que cela vous obtient passé les blocs d'achoppement syntaxiques assez pour rendre les liens utiles. Je suis heureux de répondre à des questions plus spécifiques que vous avez. Dans mon expérience, obj-c les débutants ont un temps très difficile avec la syntaxe, et puis cliquez sur et se sent brillant. Accrochez-vous!

Autres conseils

La définition d'une méthode Objective-C est assez simple. Il est assez similaire à la définition d'un appel régulier de la fonction C, en fait. Le grand ajout est la possibilité de nommer les paramètres. Voici un exemple:

-(int)addX:(int)x toY:(int)y
{
    return x + y;
}

que vous pouvez utiliser en envoyant un message à l'objet approprié:

int z = [object addX:x toY:y];

Dans ce cas, j'ai donné les paramètres et les arguments les mêmes noms, à préciser comment les choses s'alignent. Vous pouvez tout aussi bien faire:

int z = [object addX:4 toY:7];

Et après cela, z sera 11.

Consultez Introduction à Objective C .

Le format de la méthode de base est

-(ReturnType *)methodName:(VariableType *)variableName{

}

Par exemple:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

Vous devriez également consulter le site Web du livre pour les errata.

Je l'ai fait la même chose que vous avez fait. Je pris le livre premier iPhone Head dével (couvrant 3.1 SDK).

J'ai couru à travers tous les tutoriels en elle et a trouvé que 1 erreur qui a causé ma demande de ne pas travailler (j'ai fait une note dans mon livre, mais je ne trouve pas maintenant ...).

Alors, après que je réalisé que j'avais exactement le même problème que vous avez avec la syntaxe.

Je pris "Programmation en Objective-C 2.0" par Stephen G. Kochan. (Il est tout simplement génial.) Le livre est clair et concis. Je ne l'ai pas même le faire à 25% du livre et toutes mes questions ont été répondues.

lecture de code Objective-C m'a jeté pendant des mois parce que je suis tellement habitué à une syntaxe différente que mon cerveau a pris un peu de temps pour adapter à la manière objective-C attend.

Qu'est-ce que je trouve est un code Objective-C devient vraiment lisible une fois que vous envelopper votre cerveau autour d'elle. L'exemple de Carl Norum ci-dessus est une grande démonstration de lisibilité.

[object addX:4 toY:7];

Il ne va pas beaucoup plus lisible que ça!

Aussi la terminologie est un peu différent. « Messagerie un objet » vs « appelant une méthode » m'a jeté pendant quelques semaines aussi.

J'espère que la recommandation du livre vous aide, il m'a vraiment beaucoup aidé.

Il y a quelques grandes ressources d'apprentissage d'Apple:

Objectif-C l'apprentissage: Notions élémentaires

et

codage Directives pour Cocoa

Bonne chance!

Cocoa (R) Programmation pour Mac (R) OS X (3e édition) , c'est la bible pour Mac et Cocoa.

Je n'ai pas eu de problèmes avec elle, mais gardez à l'esprit que l'API sont toujours en mouvement vers l'avant afin qu'il pourrait y avoir de légères mises à jour / modifications. Mais je ne l'ai pas trouvé quelque chose qui me empêcherait de terminer tous les exemples de code et des exercices.

Voici le livre à lire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top