Question

Étant un développeur PHP assez expérimenté et ayant une bonne connaissance du C (création d'une expérience d'informatique répartie avec 16 des microcontrôleurs NEC de mon père), j'aimerais passer à Objective-C et à Cocoa. intégrer les applications Mac / iPhone à certains de mes projets PHP.

Parcours de la "Programmation Cocoa pour Mac OS X" livre d'Arron Hiilegass, je suis un peu frustré. Je peux travailler sur les exemples, mais il n'explique pas exactement pourquoi il utilise une classe de cette façon (NSNumber au lieu de int ou double par exemple).

Je cherche un bon livre / des livres pour maigrir en premier sur Objective-C. Ma question est la suivante: quel serait un bon livre? Je regarde "Programmation en Objective-C 2.0". et ça a l'air plutôt décent. Où irais-je de là? Je pense que je devrais alors reprendre mon livre Cocoa.

De plus, existe-t-il sur Internet des ressources qui faciliteraient la transition de PHP à Objective-C? Je sais que PHP est un langage de script faiblement typé, il a donc ses différences. Il y a des choses qui n'ont aucun sens avec Obj-C et Cocoa, pourquoi ne puis-je pas mettre des entiers dans un NSMutableArray?

Quoi qu'il en soit. Merci pour l'aide! (Je n'ai que 14 ans, alors allez-y doucement si j'ai commis des erreurs dans mon Q.)

Était-ce utile?

La solution

Je viens de passer en revue la "Programmation en Objective-C 2.0". moi-même et c'est très bien. Je le recommanderais, surtout si vous n'avez jamais utilisé C (ou si vous l'avez oublié, comme moi).

Cependant, Apple a vraiment une excellente documentation. Si cela ne vous dérange pas de lire en ligne, je commencerais par leur Mise en route avec Cocoa .

Autres conseils

Je peux travailler sur les exemples, mais il n'explique pas exactement pourquoi il utilise une classe de cette façon (NSNumber au lieu de int ou double par exemple) ...

Il y a des choses qui n'ont pas de sens avec Obj-C et Cocoa, pourquoi ne puis-je pas mettre des entiers dans un NSMutableArray?

NSNumber est un type beaucoup plus utile qu'un type primitif tel que int ou double , comme il est souvent utilisé en conjonction avec d'autres objets que vous rencontrerez lors de la programmation dans Cocoa.

Par exemple, pour regrouper un nombre en tant que valeur dans un tableau redimensionnable (comme un NSMutableArray ) ou un tableau associatif (une instance de NSDictionary ), vous devez transformer la primitive numérique ( int , double , etc.) en sérialisable , ou un objet archivable & # 8212; un NSNumber .

Les primitives ne peuvent pas être sérialisées, contrairement à un NSNumber , car elles n'appartiennent pas à l'ensemble de base de "Core Foundation". types ( NSNumber , NSArray , NSString , etc.) qu’Apple s’est efforcé de vous proposer.

De plus, en utilisant NSNumber , vous bénéficiez également de nombreuses méthodes gratuites: vous pouvez convertir rapidement le nombre en chaîne, par exemple, en tapant simplement [myNumber stringValue]. .

Ou, si vous traitez votre NSNumber comme le prix de quelque chose ("1,23 €"), vous pouvez appliquer un NSNumberFormatter à assurez-vous que les opérations sur le nombre donnent les résultats au format que vous attendez (par exemple, si vous ajoutez deux valeurs de prix, vous vous attendez à obtenir une valeur de devise en retour).

Cela ne veut pas dire que vous ne pouvez ou ne devriez pas utiliser les variables int ou double . Mais dans de nombreux cas, vous constaterez qu'un NSNumber est une meilleure option, en ce sens que vous pouvez écrire moins de code et bénéficier de nombreuses fonctionnalités pour "gratuit".

D'après mon expérience, la documentation Internet a été suffisamment utile pour apprendre Obj-C et CocoaTouch. Ma progression a ressemblé à ceci:

1) Regardez les vidéos Apple Dev sur iTunes (elles sont gratuites).

2) Lisez Mise en route , Guide de programmation d'applications iPhone .

3) Lisez OOP In Obj -C .

4) En savoir plus: Cocoa Principes de base , Objective-C Primer , Pratiques de Cocoa .

5) Faites quelques tutoriels simples.

IMO: Toutes les informations dont vous avez besoin sont sur le site Apple Dev: iPhone. Économisez votre argent et n'achetez pas de livres. Si vous ne comprenez pas & pourquoi; POURQUOI " quelque chose est fait dans l’un des guides ou tutoriels, faites-le immédiatement référence à d’autres sources de Google.

Vous devez garder à l'esprit que la courbe d'apprentissage ici est assez grande. C'était pour moi et j'étudie des choses comme celle-ci tous les jours à l'université. Alors, tenez-vous-en et lisez intelligemment (écrivez des trucs comme vous le savez). Ce que je vois en moi-même, c’est que si je comprends comment l’iPhone fonctionne et que je connais le flux de données, la programmation de celui-ci est essentiellement un problème de syntaxe.

PHP est très différent d’Objective-C. De plus, la façon dont les problèmes de programmation sont résolus en PHP dans le contexte d’Internet est très différente de la façon dont les problèmes de programmation sont résolus dans Obj-C, dans le contexte de l’iPhone. Pour cette raison, vous souhaitez aborder l'iPhone sous un nouvel angle et en tant qu'étudiant / apprenant. Prenez votre temps et concentrez-vous sur la programmation orientée objet et les meilleures pratiques. Cela vous bénira pour les années à venir.

-Buffalo

En outre, pour répondre à vos questions:

Objective-C est un langage orienté objet construit comme une extension au-dessus de C.

En tant que tel, il fournit à la fois des types primitifs (comme int et double) et des objets.

NSNumber est une classe Objective-C qui représente un nombre PLUS un nombre d'opérations sur ce nombre (méthodes). L’utilisation d’un numéro NSNumber sur un type primitif numérique présente l’avantage de pouvoir être utilisé de manière orientée objet (vous pouvez lui envoyer des messages, vous pouvez étendre ses fonctionnalités avec des "protocoles", vous pouvez en hériter, vous pouvez en hériter). transmettez-le à une méthode qui attend un objet, etc.).

En ce qui concerne NSMutableArray, il s'agit d'une classe qui fournit une fonctionnalité semblable à un tableau. Il est conçu pour fonctionner avec les types d'objet Objective-C (il s'agit d'un conteneur d'objets de type NSObject et d'objets qui en héritent) et c'est la raison pour laquelle il ne peut pas contenir d'entier. Il peut cependant contenir un NSInteger qui est une classe d’objectifs C représentant un entier.

J'essayerais personnellement de commencer par apprendre Objective-C à partir des références Apple à l'adresse http: //. developer.apple.com/library/mac/navigation/ et passer au cacao à partir de là.

J'étais dans un bateau similaire (PHP passant à Objective-C) et j'ai trouvé que le meilleur processus était de se lancer dans un projet. J'ai également lu le livre Hillegass et ce fut un bon début, mais la seule façon de connaître une langue est de se débrouiller avec un objectif clair.

C'est douloureux mais ça marche. Café, API et kleenex.

EDIT: Je viens de lire la dernière partie de votre message et j’ai vu que vous aviez 14 ans. Peut-être changer de café avec Coca-Cola:)

Mon tutoriel favori avec Objective-C, que vous veniez de n'importe où, est le cours iTunesU de Stanford sur la programmation iOS. Le professeur met vraiment les choses en perspective à partir des autres livres et tutoriels en ligne.

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