Une bonne compréhension du SDK iOS est essentielle lors du développement d'applications iOS natives. Cela vous aidera non seulement à choisir les bons outils pour résoudre un problème particulier, mais vous évitera de vous perdre dans les dizaines de cadres inclus dans le SDK iOS. Dans cet article, nous zoomons sur l'architecture iOS et découvrons ce qui alimente les applications iOS sous le capot..
Je suis presque certain que même quelques développeurs iOS expérimentés auraient du mal à définir le SDK iOS en une phrase. L'acronyme SDK représente Slogiciel rédéveloppement Kil. Le kit SDK iOS contient les outils et les ressources nécessaires au développement d'applications iOS natives, ce qui signifie que le kit SDK permet aux développeurs de développer, installer, exécuter et tester des applications dans le simulateur iOS et sur des périphériques physiques..
Les deux forces motrices des applications iOS natives sont Objective-C et les infrastructures système iOS natives. Dans l'article précédent, nous avons exploré le langage de programmation Objective-C. Dans cet article, je souhaite explorer les frameworks qui optimisent les applications iOS natives..
Cela inclut des cadres de haut niveau, tels que le UIKit et Kit de carte cadres, mais également des cadres étroitement liés au matériel, tels que le Accélérer et Emplacement de base cadres.
Vous savez maintenant ce qu'est le SDK iOS, mais en quoi une application peut-elle être qualifiée d'application iOS native? La réponse simple est qu'une application iOS est une application qui s'exécute sur un périphérique iOS. Cependant, ce n'est que la moitié de la vérité. Qu'en est-il des applications Web exécutées dans le navigateur Safari?
Une application iOS est une application Cocoa développée pour la plate-forme iOS. Génial. Qu'est-ce qu'une application Cocoa? Une application Cocoa est un peu plus difficile à définir. Est-ce la langue dans laquelle l'application est écrite? Pas vraiment. Est-ce que ce sont les outils avec lesquels une application Cocoa est construite? Non. Il est possible de développer une application Cocoa sans l'aide de Xcode..
Apple définit une application Cocoa comme une application composée d'objets qui héritent en définitive de NSObject
, une classe racine déclarée dans le framework Foundation, basée sur le runtime Objective-C.
Dans cet article, je souhaite me concentrer sur les frameworks utilisés pour créer des applications iOS natives. Si vous souhaitez en savoir plus sur le runtime d'Objective-C, je vous recommande de consulter la référence d'exécution Objective-C d'Apple ou de lire le Guide de programmation d'Objective-C Runtime..
Le framework Foundation fournit une seconde classe racine, NSProxy
. Cependant, vous ne l'utiliserez que rarement, voire jamais, dans aucun de vos projets..
Une autre différence avec les applications Web exécutées dans le navigateur Safari réside dans le fait que les applications natives interagissent directement avec le système d'exploitation iOS et les infrastructures de système iOS natives. Le système d'exploitation joue le rôle de médiateur entre l'application et le matériel sous-jacent. Un avantage clé de cette médiation ou de cette abstraction est que les applications natives n'ont pas à s'inquiéter des futures modifications matérielles ou des spécifications de périphérique.
Le système d'exploitation fournit aux applications natives les informations nécessaires sur les fonctionnalités matérielles (le périphérique est-il doté d'un appareil photo?) Et sur les spécifications du périphérique (l'application est-elle exécutée sur un iPhone ou un iPad?).
L'architecture iOS peut être décomposée en quatre couches distinctes:
Cette architecture en couches illustre ce niveau d'abstraction, avec les couches de niveau supérieur plus abstraites et les couches de niveau inférieur plus fondamentales et étroitement liées au matériel. Il va sans dire que les couches de niveau supérieur s'appuient sur les couches de niveau inférieur pour certaines de leurs fonctionnalités..
Apple recommande d'utiliser autant que possible les frameworks de niveau supérieur, car ce sont souvent des abstractions orientées objet des frameworks de niveau inférieur. En d'autres termes, les couches de niveau supérieur interagissent indirectement avec le matériel par l'intermédiaire des couches de niveau inférieur, qui sont par nature plus complexes. Bien sûr, il est toujours possible de revenir aux frameworks de niveau inférieur si les frameworks de niveau supérieur ne répondent pas à vos besoins..
Pour rappel, un framework est un répertoire contenant une bibliothèque partagée dynamique et les ressources qui lui sont associées, telles que des fichiers d’en-tête, des images, etc. Les frameworks sont les points d’accès à diverses interfaces système, telles que le carnet d’adresses iOS, le répertoire du périphérique. pellicule, et la bibliothèque de musique.
Dans l'article précédent, j'ai écrit sur Cocoa Touch et ses relations avec Objective-C. Dans cet article, je voudrais parler de Cocoa Touch d’un point de vue plus fonctionnel, de la manière dont les applications reposent sur la couche Cocoa Touch et de son rôle dans l’architecture iOS..
La couche Cocoa Touch est la couche la plus haute de l'architecture iOS. Il contient certains des cadres clés sur lesquels reposent les applications iOS natives, le plus important étant le UIKit cadre.
La couche Cocoa Touch définit l’infrastructure applicative de base et fournit un certain nombre de technologies vitales, telles que le multitâche et la saisie tactile..
Comme je l'ai mentionné, les applications iOS s'appuient fortement sur le framework UIKit. Les applications iOS natives ne peuvent pas fonctionner si elles ne sont pas liées aux frameworks UIKit et Foundation.
Le framework UIKit ou UIKit est adapté à la plate-forme iOS. Il existe un cadre équivalent pour la plate-forme OS X nommé le Kit d'application ou AppKit cadre. UIKit fournit l'infrastructure pour les applications iOS graphiques, gérées par les événements. Il prend également en compte d’autres aspects essentiels de la plate-forme iOS, tels que le multitâche, les notifications push et l’accessibilité..
La couche Cocoa Touch offre aux développeurs un grand nombre de fonctionnalités de haut niveau, telles que la mise en page automatique, l'impression, la reconnaissance des gestes et la prise en charge des documents. Outre UIKit, il contient, entre autres, les infrastructures Map Kit, Event Kit et Message UI..
Pour une liste complète de tous les frameworks de la couche Cocoa Touch, j'aimerais vous reporter au guide de présentation de la technologie iOS d'Apple..
Les graphiques, l’audio et la vidéo sont gérés par la couche média. Cette couche contient un certain nombre de technologies clés, telles que Core Graphics, OpenGL ES et OpenAL, AV Foundation et Core Media..
La couche Multimédia contient un grand nombre de structures, notamment la bibliothèque Assets pour accéder aux photos et vidéos d'un périphérique, la structure Core Image pour la manipulation d'images par le biais de filtres et la structure Core Graphics pour le dessin 2D..
Consultez le Guide de présentation de la technologie iOS de Apple pour obtenir une liste complète de tous les environnements de la couche média..
La couche Core Services est chargée de la gestion des services système fondamentaux utilisés par les applications iOS natives. La couche Cocoa Touch s'appuie fortement sur la couche Core Services pour certaines de ses fonctionnalités. La couche Core Services fournit également un certain nombre de fonctionnalités indispensables, telles que les objets de blocage, Grand Central Dispatch, les achats intégrés et le stockage iCloud..
ARC ou ARC est l’un des ajouts les plus appréciés à la couche Services de base. UNEutomatique Rréférence CMonter. ARC est une fonctionnalité au niveau du compilateur, introduite en 2011 avec la version iOS 5. ARC simplifie le processus de gestion de la mémoire dans Objective-C..
La gestion de la mémoire est un sujet que nous n'avons pas abordé dans cette série, mais il est important que vous compreniez les bases de la gestion de la mémoire lors du développement d'applications Cocoa. Le comptage automatique des références est un excellent ajout, mais il est important que vous sachiez ce que fait ARC pour vous..
Pour en savoir plus sur la gestion de la mémoire, consultez le guide Objective-C Programming Language et je vous le recommande vivement..
Le framework Foundation ou Foundation est un autre framework essentiel pour les applications iOS et OS X. Dans le prochain article, nous explorerons ce cadre plus en détail. Le framework Foundation est plus qu’un ensemble de classes utiles, telles que NSArray
, NSDictionary
, et NSDate
.
Fondation fournit la NSObject
La classe racine, qui fournit une interface de base pour l'exécution d'Objective-C, et introduit également plusieurs paradigmes, tels que les règles de propriété des objets. Comme Core Foundation (voir ci-dessous), Foundation permet aux différentes bibliothèques et frameworks de partager facilement des données et du code..
Un autre cadre important de la couche de services de base étroitement lié au cadre de base est le C-based Fondation de base cadre ou Fondation de base. Comme le framework Foundation, il permet aux différentes bibliothèques et frameworks de partager des données et du code..
Core Foundation a une fonctionnalité appelée passerelle sans frais, qui permet la substitution d'objets Cocoa pour des objets Core Foundation dans les paramètres de fonction et inversement.
Pour une liste complète de tous les frameworks de la couche Core Services, veuillez vous reporter au guide de présentation de la technologie iOS..
La plupart des fonctionnalités fournies par les trois couches de niveau supérieur sont basées sur la couche Core OS et ses fonctionnalités de bas niveau. La couche Core OS fournit une poignée de frameworks que votre application peut utiliser directement, tels que les frameworks Accelerate et Security..
La couche Core OS encapsule également l’environnement du noyau et les interfaces UNIX de bas niveau auxquelles votre application n’a pas accès pour des raisons évidentes de sécurité. Cependant, à travers le libSystem La bibliothèque, qui est basée sur le C, permet d'accéder directement à de nombreuses fonctionnalités de bas niveau, telles que les sockets BSD, les threads POSIX et les services DNS..
Votre allié le plus proche lors du développement d'applications iOS natives est la documentation fournie avec le SDK iOS. Dans l'ensemble, la documentation est excellente et vous aidera à maîtriser rapidement une nouvelle technologie ou un nouveau cadre..
Bien que la documentation soit disponible en ligne, la plupart des développeurs utilisent le navigateur de documentation inclus dans Xcode. Dans Xcode 5, vous pouvez trouver le navigateur de documentation en sélectionnant Documentation et référence API de Xcode La fenêtre menu.
Étant donné que vous utiliserez abondamment la documentation, vous voudrez peut-être apprendre quelques raccourcis pour rechercher ce que vous recherchez dans la documentation. Comme je l'ai mentionné dans le paragraphe précédent, le navigateur de documentation fournit un accès facile à la documentation. Pour accéder rapidement à la documentation, appuyez sur Maj + Commande + 0
dans Xcode 5.
Lors de l'écriture de code dans l'éditeur de code de Xcode, il peut rapidement devenir fastidieux de basculer entre l'éditeur de code et le navigateur de documentation à chaque fois que vous devez rechercher une classe ou une méthode..
Il existe deux solutions pour parcourir efficacement la documentation. Chaque fois que vous placez votre curseur sur un nom de classe ou de méthode dans l'éditeur de code de Xcode, la Inspecteur d'aide rapide dans la barre de droite, un résumé de la classe ou de la méthode correspondante est affiché. Le résumé contient plusieurs liens utiles qui vous dirigent vers le navigateur de documentation..
Comme je cache généralement la barre latérale droite lorsque je travaille dans l'éditeur de code, j'utilise une autre méthode pour afficher la documentation d'une classe ou d'une méthode. Chaque fois que vous appuyez sur la Option
touche de curseur et survolez un nom de classe ou de méthode, les curseurs se transforment en point d'interrogation et le nom de la classe ou de la méthode est mis en surbrillance. En cliquant sur un nom de classe ou de méthode avec le point d'interrogation, une nouvelle fenêtre contenant le même résumé que le Inspecteur d'aide rapide. En cliquant sur l'un des liens dans la fenêtre, vous accédez au navigateur de documentation. C'est un moyen rapide et pratique de basculer entre l'éditeur de code et le navigateur de documentation, en particulier lorsque vous travaillez avec deux moniteurs.
Vous devez maintenant bien comprendre le SDK iOS et les différentes couches de l’architecture iOS. Les deux frameworks de base d'une application iOS, UIKit et Foundation, sont au centre des deux prochains versements de cette série..
Ces frameworks sont non seulement indispensables pour toutes les applications iOS, mais ils contiennent des dizaines de classes que vous utiliserez souvent lors du développement d'applications iOS natives..