10 compétences et connaissances nécessaires pour un développeur iOS débutant

image

La profession de développeur iOS est désormais très demandée, bien rémunérée, voire à la mode, et attire donc beaucoup de monde.

De nombreux candidats à des postes vacants viennent à moi et à mes collègues pour des entretiens, et je vois clairement parmi de nombreux nouveaux arrivants le manque de connaissances de base ou tout simplement une connaissance incertaine. Bien qu'il existe de nombreux articles, livres et cours (payants et gratuits) sur Internet, à partir desquels vous pouvez obtenir les connaissances nécessaires, il n'est pas toujours facile de comprendre sur quels sujets se concentrer.

Dans cet article, je vais partager des informations sur les compétences et les connaissances que je considère importantes pour un développeur iOS débutant, essayer d'expliquer pourquoi elles sont nécessaires et donner des liens vers du matériel pour leur étude.

Le matériel s'adresse principalement à ceux qui veulent commencer la formation, combler les lacunes ou comprendre leur volonté de travailler en tant que développeur iOS. Je vais essayer de tout expliquer en termes simples.

Je dois dire tout de suite que la plupart des documents auxquels je fournirai des liens sont en anglais. Je comprends que l'apprentissage de l'anglais peut être plus difficile et plus lent au début, mais il portera ses fruits plus tard - vous ne pouvez pas toujours trouver de bons documents pertinents en russe.

Premiers pas


Avant d'aborder les sujets suivants, je recommande de préparer les bases, à savoir suivre (écouter et reproduire toutes les tâches) le cours gratuit CS 193P de l'Université de Stanford et lire la documentation Swift sur le site Web d'Apple.

C'est tout à fait normal si vous ne comprenez pas ou ne vous souvenez pas de tous les sujets, mais vous aurez une base - une compréhension de base structurée des applications iOS de l'appareil et des constructions de langage Swift. En passant du temps sur ces choses au début, il vous sera beaucoup plus facile d'ajouter des connaissances sur chaque sujet.

1. Disposition automatique, Storyboard, disposition à partir du code


La création d'une interface d'application basée sur la mise en page est une compétence de base pour un programmeur iOS. Il convient de noter non seulement les principaux composants à partir desquels l’interface est assemblée (UIView, UILabel, UIButton, UIImageView, etc.), mais aussi comment les organiser sur l’écran pour obtenir la position et la taille souhaitées sur des écrans de différentes tailles, y compris lorsque vous tournez l'appareil. Par souci de simplicité, je voudrais souligner 3 façons de créer une interface:

  • chemin visuel à travers Interface Builder
  • décrire complètement l'interface à partir du code
  • une option combinée, lorsqu'une partie du contenu des écrans est saisie via Interface Builder et que leurs paramètres sont déplacés vers le code.


Les compétences de mise en page d'interface uniquement via le générateur d'interface sur le StoryBoard peuvent ne pas être suffisantes pour vous. En plus du fait que vous ne pouvez pas tout faire via StoryBoard, vous devez comprendre que plusieurs développeurs travaillent sur de grandes applications, et un système de contrôle de version (le plus souvent c'est Git) est utilisé pour combiner les résultats de leur travail. Lorsque plusieurs personnes travaillent sur un même code, le résultat de leur travail n'est pas toujours possible de se combiner automatiquement. Si l'interface a été conçue par le programmeur à partir du code, la fusion est plus facile et plus rapide que lorsque le code a été généré par Interface Builder.

Pour maîtriser le sujet, je recommande:


Comment comprendre que vous maîtrisez suffisamment le sujet? Prenez l'une des applications que vous utilisez sur votre iPhone. Vous pouvez commencer avec les standards, par exemple, Apple Music. Essayez de reproduire entièrement un ou deux écrans que vous voyez, ainsi que leur comportement lors des virages.

image

2. Cycle de vie de ViewController


Pour simplifier, supposons que chaque écran d'une application mobile soit un ViewContoller, ou plutôt un descendant de la classe UIViewContoller. Il est important pour le développeur iOS de savoir comment fonctionne le cycle de vie de l'écran, ou plutôt quelles méthodes seront exécutées pendant la préparation, l'apparence, la rotation, la destruction et d'autres conditions d'écran.

image

Matériaux associés:


3. Travailler avec UITableView et UICollectionView


La plupart des interfaces d'application mobile sont basées sur des tables. Vous devriez pouvoir ajouter un tableau à l'écran, préparer des cellules, implémenter les protocoles nécessaires, affecter un délégué et une source de données.
De plus, il est important de comprendre pourquoi les identifiants sont nécessaires et ce que l'on entend par réutilisation des cellules.

Matériaux associés:


4. Grand Central Dispatch


Les applications doivent pouvoir résoudre simultanément plusieurs problèmes. Par exemple, lorsqu'un utilisateur parcourt un fil d'actualités, les données sont téléchargées à partir du réseau et l'interface n'est pas bloquée.

Grand Central Dispatch est l'un des sujets importants et plutôt difficiles que vous devez absolument savoir si vous allez programmer pour iOS.

Matériaux associés:


5. Mise en réseau, réception de données de JSON


Laquelle de vos applications préférées continue de fonctionner sans connexion Internet? Je pense que si vous relancez les jeux, vous verrez que la plupart des applications fonctionnent avec les données du réseau. Qu'est-ce qui, dans ce cas, devrait être possible pour un développeur iOS débutant? Je pense que pour créer une demande de réseau, recevoir et traiter les données. La connaissance de URLSession devrait être suffisante pour commencer. Il s'agit de l'approche la plus élémentaire, et je recommande tout d'abord d'en maîtriser l'application. Il n'est peut-être pas déplacé de connaître l'existence d'une bibliothèque aussi populaire qu'Alamofire , mais cela ne devrait pas se faire au détriment de la URLSession.

Le plus souvent, les données transmises aux applications sur le réseau sont transmises au format JSON. Vous devez pouvoir recevoir et traiter ces données, par exemple, pour en dériver une liste. Dans le même temps, il est conseillé que vous sachiez le faire non seulement à l'aide de l'une des bibliothèques populaires, par exemple SwiftyJSON , mais également que vous possédez les outils de langage standard, familiarisez-vous avec Codable.

Un peu de travail avec URLSession est décrit dans un article d'Audrey Tam . Il y a beaucoup de documents sur le travail avec JSON; vous pouvez voir l' article d'Anand Nimje .

Pour apprendre le sujet dans la pratique, je recommande de créer une application avec des prévisions météorologiques, dans laquelle il y a un champ pour entrer le nom de la ville, une demande d'API est créée ( OpenWeatherMap convient) et les informations météorologiques sont affichées en fonction du JSON reçu.

6. Connaissance rapide


La lecture de la documentation vous aidera beaucoup ici. L'apprentissage de Swift peut prendre un certain temps, mais en sortant, vous devez emmener et être libre de parcourir les sujets suivants:

  • cours
  • la structure
  • les transferts
  • protocoles
  • collections
  • méthodes de travail avec les collections (énumération, tri, filtrage, cartographie, réduction, etc.)
  • travailler avec des options et des exceptions

Ces sujets doivent être connus et maîtrisés dans le volume auquel ils sont donnés dans la documentation - tout cela sera utile dans le travail. C'est très bien si, pour chaque sujet, vous pouvez donner un exemple de problème qui peut être résolu avec leur aide.

Analysez soigneusement les différences entre les structures et les classes - non seulement parce que cette question vous sera posée lors de l'entretien avec une forte probabilité, elle sera juste nécessaire dans votre travail.

En plus de lire la documentation sur Swift, vous pouvez regarder le marathon vidéo sur Swift par Alexei Skutarenko. Ce marathon ne remplacera pas la lecture de la documentation en raison du fait que tous les sujets n'y sont pas divulgués, et qu'il a également été publié il y a 4 ans, et pendant ce temps, il y a eu des changements mineurs dans Swift. Alexey a fait un travail formidable, il y a beaucoup de matériel et de réflexions utiles.

7. Liens forts et faibles, ARC, fuites de mémoire


Comment s'assurer que l'application n'a pas de problèmes de manque de mémoire?
Quels sont les liens, quels sont les types de liens? Que fait exactement ARC, et comment éviter le cycle de conservation, et de quoi s'agit-il? Le sujet n'est pas compliqué, mais extrêmement important. Vous pouvez vous familiariser, par exemple, dans SwiftBook .

8. Protocoles et délégués


Lors du développement pour iOS, vous rencontrerez souvent une délégation, ou plutôt un transfert de responsabilité d'un objet à un autre. Par exemple, la tâche classique est un tableau avec des cellules, chacune ayant un bouton «ajouter un élément aux favoris». Vous devez pouvoir créer un protocole pour cette situation, nommer un délégué et implémenter le support de protocole pour lui.

Matériaux associés:



9. Approches architecturales: MVC, MVVM, MVP, VIPER


Pour faciliter la création et la prise en charge des produits logiciels pendant le développement, ils sont divisés en blocs distincts. Par exemple, un bloc est uniquement responsable de l'utilisation des données et l'autre de l'apparence. Cette approche présente un certain nombre d'avantages, par exemple, vous pouvez modifier l'apparence sans toucher à la logique, ou si nécessaire, vous pouvez modifier la source de données, sans modifier le reste de l'application. Évidemment, ces approches ne sont pas utilisées uniquement dans iOS, je dirai plus - elles sont venues ici à partir d'autres plateformes. Il existe plusieurs approches bien établies pour partager la responsabilité entre différents blocs; pour travailler avec iOS, je recommande une bonne compréhension de MVC et MVVM.

Au lieu d'une explication normale de la division des responsabilités en architecture, j'entends souvent dans les interviews, quelque chose comme "MVC est mauvais parce que c'est un Massive View Controller et MVVM est beaucoup mieux."

Matériaux associés:


10. Stockage de données, données de base


Comme nous l'avons dit ci-dessus, de nombreuses applications fonctionnent avec les données du réseau. Vous devez pouvoir enregistrer ces données sur l'appareil, ainsi que ce que l'utilisateur a entré. À mon avis, l'ensemble de base des moyens de stocker des données pour un programmeur iOS débutant comprend


Il n'y a pas SQLite, Realm, Firebase dans cette liste. Ils peuvent être maîtrisés si vous le souhaitez, mais certainement pas au détriment des méthodes ci-dessus. Si vous avez déjà de l'expérience avec SQL, alors je recommande d'utiliser SQLite sur iOS comme réserve, il est très probable que vous trouverez cette approche du stockage plus pratique.

Matériaux associés:


Résumé


Je pense qu'en répartissant uniformément les sujets ci-dessus et en les consacrant à l'étude à partir de 20 heures par semaine, il est vraiment possible de tout maîtriser à partir de zéro dans une période de 4 à 5 mois.
Avec cette richesse de connaissances, vous pouvez commencer à prendre des commandes pour de petites applications ou à passer des entretiens. Par exemple, s'il y avait un poste vacant, nous emmènerions une personne avec cet ensemble de connaissances dans notre équipe mobile.

Écrivez votre application terminée


Je suis sûr qu'un développeur iOS devrait avoir sa propre application. Nous parlons d'une application complète qui résout un problème ou un problème nécessaire (c'est correct si cela ne résout que pour l'auteur de l'application). Au cours de la rédaction de votre candidature, vous rencontrerez des tâches créatives de recherche de solutions adaptées, cela vous permettra non seulement de mieux consolider les connaissances théoriques, mais aussi de vous faire plaisir.

N'ayez pas peur de vos candidatures, montrez-les lors des entretiens. Même si l'application est simple, même si le design a été fait par nous-mêmes, et il s'est avéré que ce n'est pas la plus belle application (si l'application est nécessaire, la fonctionnalité peut alors être étendue et le design peut être renouvelé).

PS


Veuillez indiquer dans les commentaires les sujets que vous jugez importants pour le développement de nouveaux développeurs iOS

Source: https://habr.com/ru/post/fr437300/


All Articles