60 votes

Quelles sont les compétences de programmation dont j'ai besoin pour devenir développeur iPhone?

J'ai presque 3 ans d'expérience en programmation dans le monde Windows. Je connais C et C ++ (une partie de mes études collégiales) et je travaille sur Delphi et C # de manière professionnelle.

Je pense à apprendre quelques trucs de développement iPhone. Quelles sont les compétences en programmation / logiciel nécessaires pour plonger?

130voto

Rob Napier Points 92148

Quand j'enseigne le Cacao pour les gens avec un C++ arrière-plan, ici sont les questions clés, je trouve qu'ils ont:

  • De nommage. Appellation correcte est essentielle en Objective-C. Le compilateur ne vous sauvera pas. Apprendre les conventions de nommage et de les suivre.

  • La notation point. Dot notation est agréable de type pour les développeurs de Cacao, mais extrêmement difficile pour les nouveaux développeurs. La notation point ne signifie pas "d'obtenir ou de définir la ivar de l'objet." Dot notation signifie "passer le message -foo ou -setFoo: à l'objet." Ces deux affirmations semblent très similaires, mais qui sont en réalité radicalement différente. Le plus important, foo et self.foo ne sont pas la même chose, bien souvent, ils semblent être la même chose. L'attribution à ce dernier conservera généralement l'objet, tandis que l'ancien ne sera pas.

  • Suite à la notation point, les accesseurs ne sont pas obligatoires dans ObjC, mais devrait l'être. Toujours, toujours les utiliser (sauf dans les accesseurs eux-mêmes, bien sûr, et dans -dealloc). N'accédez pas à votre ivars directement. Non, même si vous voyez un exemple de code de le faire.

  • La raison pour laquelle tous les trois dernières questions de gestion de la mémoire. Si vous suivez ces trois règles, alors votre gestion de la mémoire sera facile et vous aurez très peu de problèmes. Si vous ne le faites pas, et de C++ les gens sont souvent très mauvaises à propos de cette parce que le C++ a bâclé les conventions de nommage, alors vous allez avoir de terribles problèmes de gestion de mémoire.

  • Objective-C peut utiliser le C++. Je recommande fortement, cependant, que vous gardez votre C++ et Objective-C séparé, et n'ont qu'une mince couche de traduction en Objective-C++. Apprendre à utiliser NSArray plutôt que de vecteur, etc.

  • Les développeurs C++ souvent se confondre sur la façon dont les Singletons sont utilisés dans ObjC. Si vous comprenez le plein, de corriger le pattern Singleton, alors vous devez comprendre que ObjC ne l'utilisez pas. C'est ok d'avoir une statique en ObjC qui détient le "instance partagée" et que vous n'avez jamais gratuit. OS X (téléphone et Mac) sera de récupérer de la mémoire pour vous à la fin du programme. C'est ok d'avoir un "singleton" qui peut avoir plusieurs instances (NSNotificationCenter et de nombreux autres objets permettent à présent). Il est rarement la raison pour vraiment s'assurer que vous êtes le seul et unique instance de l'objet (si vous êtes primordial -release, arrêter, même si vous avez trouvé le code pour le faire sur le site d'Apple). "Singletons" sont généralement juste un exemple qui arrive à être stockées dans une statique et est renvoyée lorsque vous avez demandé le "sharedController" ou "sharedFoo" ou quoi que ce soit.

  • Threading est assez rare dans le Cacao. La plupart des choses sont faites sur l'Exécution de la Boucle, qui est coopérative multi-tâches. Vous avez demandé quelque chose, on vous répondra aussi vite que vous le pouvez, le tout sur un seul thread.

Pour les développeurs en C:

  • Je pousse les développeurs en C de rester à l'écart du Cœur de la Fondation (les choses qui commencent CF). De base de la Fondation est très utile, mais il est trop facile de le laisser devenir une béquille pour éviter d'apprendre de Cacao. Il est préférable de d'abord apprendre le Cacao en ObjC, puis revenir en arrière et utiliser Fondement de Base lorsque vous en avez besoin.

  • N'ayez pas peur de longue noms descriptifs. S'habituer à eux. L'amour entre eux.

  • Embrasser des objets. Même la C-fonction de Base de la Fondation est essentiellement orientée objet en C de la syntaxe.

  • N'oubliez pas votre C. beaucoup d'Objective-C se fait à droite C. Il est juste à C, vraiment. C++ n'est pas le cas, mais Objective-C vraiment, c'est vraiment juste C.

  • Objective-C est vraiment C, mais le Cacao n'est pas. Le cacao est Smalltalk. Et si vous avez vraiment besoin d'étudier le Modèle-Vue-Contrôleur de paradigme et de vivre chaque jour.

Java/C#:

  • Java développeurs semblent avoir plus de mal avec la notation point. J'ai souvent juste carrément interdire la notation de point pour les anciens développeurs Java. Ne pas utiliser foo.bar, il suffit d'utiliser [foo bar] et [foo setBar:baz]. Vous vous épargnerez beaucoup de maux de tête. Java arrière-plan semble juste de rendre beaucoup plus difficile à casser l'idée que la notation point est vraiment un appel de méthode et rien d'autre.

  • Plus encore que les développeurs C++, je dois enseigner aux développeurs Java qu'ils ne vont pas à frayer les threads pour les choses. Utilisez la boucle, et de faire la chose de manière asynchrone avec des rappels. En tant que débutant, vous pouvez ne jamais avoir besoin de lancer un thread. J'écris beaucoup de code complexe, et encore seulement frayer peut-être un couple de ObjC threads dans un programme de grande envergure.

  • Les développeurs C# (et les développeurs Windows en général) ont de la difficulté avec Interface Builder. Lorsque vous créez un bouton dans Visual Studio, il écrit un tas de code pour vous. IB ne pas écrire de code. IB sérialise un objet. Une PLUME est juste un objet de l'archive. Au moment de l'exécution, la PLUME est en lecture, et les objets sont désérialisé.

  • Objective-C n'a pas de sous-classe beaucoup. Il utilise des objets d'aide (délégation, les sources de données). Si vous avez une fenêtre spéciale qui ne peut pas être fermé, sauf dans certaines circonstances, vous n'avez pas de sous-classe NSWindow (vous presque jamais sous-classe NSWindow pour rien). Vous désigner un délégué à la NSWindow exemple, et quand il veut fermer, il demande à son délégué -windowShouldClose:.

  • .NET a beaucoup d'objets qui ne sont semblables les choses de manières différentes, et à chaque fois qu'une nouvelle rev vient le long, ils vous donnent un nouvel ensemble d'objets qui font les mêmes choses dans de nouveaux moyens. .NET les objets ont tendance à être vraiment intelligent, avec beaucoup de peu de tripoter les boutons afin de les configurer. Cacao objets sont muets, et c'est pourquoi je les aime tellement. Une vue de la table dans le Cacao ne sait rien sur l'interrogation des serveurs SQL. Une vue de la table sait comment dessiner un tableau. Il demande à sa source de données pour ce que les données devraient être, et il demande à chaque fois qu'il est prêt à dessiner une cellule. Il demande à son délégué quelle est la taille de chaque ligne doit être et si une ligne donnée peut être sélectionné, juste au moment où il a besoin de l'information. Ce n'est pas de faire .NET en général on fait les choses.

Et qui mène à mon plus grand point pour les développeurs venant de n'importe où ce n'est pas Smalltalk:

  • Il n'est pas sur vous. Il n'est pas sur votre code. Et il n'est pas sur votre code, de faire ceci ou cela. C'est d'abord à propos de l'utilisateur et de répondre à l'utilisateur. C'est le deuxième sujet de votre code de répondre au cadre. Vous n'avez pas l'habitude de dire le cadre de quoi faire. Il vous demande pour des choses quand il a besoin de quelque chose. Vous vous asseyez et attendez pour lui de parler de vous. Vous n'êtes pas en charge. Vous n'avez pas de contrôle sur les runloop; il vous contrôle. Vous inscrire pour être informé lorsque les choses se produisent, et de vous indiquer que vous êtes l'objet qui sait quelque chose à propos de quelque chose (les données pour une table par exemple). Et puis vous vous laissez faire, laissez-Cacao de faire le reste. C'est un monde très différent. Je l'aime beaucoup.

24voto

Grouchal Points 7053

Je peux fortement recommander les conférences de Stanford - si vous arrivez à assister à toutes les conférences (même à ce que vous pensez savoir déjà), alors vous serez bien préparé.

http://www.stanford.edu/class/cs193p/cgi-bin/index.php

Je voudrais aussi faire les exercices à partir de là - très utile - prendre quelques projets simples à votre actif comme celui-ci avant d’aborder votre propre projet.

7voto

Anthony Points 338

DotNetRocks a fait un épisode sur ce développement sur iPhone, c'est comme pour .NET devs:

http://www.dotnetrocks.com/default.aspx?showNum=454

::::EDIT::::

Ils ont fait un autre épisode sur elle maintenant, à partir d'un autre point de vue:

"Alerte de l'auditeur et de l'iPhone developer Glenn Howes nous donne la véritable histoire de développement iPhone à partir d'un point de vue différent."

http://www.dotnetrocks.com/default.aspx?showNum=468

6voto

stefanB Points 27796
  • Comment utiliser Objective-C (gestion de la mémoire, fonction des conventions de nommage, et ainsi de sur), et du framework cocoa (NSDictionary, NSArray, NSString)

  • Comment utiliser Xcode pour développer tout ce qui cool logiciel

  • Comment créer GUI à l'aide de Cacao-touch - uikit

  • Et une fois que vous avez de maître que vous avez besoin de apprendre à utiliser des cadres spécifiques que vous souhaitez utiliser par exemple comment l'accès fonctions de l'iphone/composants comme le carnet d'adresses, jouer de la musique/vidéo, télécharger des images, peut-être que la géolocalisation, graphiques ... ou ce que vous prévoyez de être en développement (jeux, tableview style des applications, des vidéos et de la musique les joueurs, web kit - accès à internet ...)

Il est assez bonne documentation en ligne pour vous aider à démarrer avec l'un des ci-dessus. Vous serez probablement surpris de voir que le développement de mac est plus facile/mieux/plus vite, puis sur windows, il est très puissant, vous aurez complète des applications en un rien de temps.

4voto

Rhythmic Fistman Points 7612

Connaître une langue de type C est tout ce dont vous avez besoin.

Les gens accordent trop d'importance à l'apprentissage d'objectif-c quand il
n'est pas un énorme changement de paradigme, il est juste ac avec des crochets et un
système de type plus dynamique. Même s'il est compilé, cela ressemble à un
langage de script.

En outre, il vous suffit de l'utiliser pour l'interface avec l'iPhoneOS.
Votre code de base peut être dans la langue de votre choix.

95% de ma base de code est c ++.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X