Course objectives
Cette formation intensive au développement macOS vous permettra de disposer de solides bases pour développer des applications Mac professionnelles et grand public autour des incontournables MacBook Air, MacBook Pro, iMac, MacMini et MacPro.
Une fois votre environnement de développement et le langage Objective-C maîtrisés vous abordez les API du SDK OS X, comme la gestion des données et l’interface utilisateur afin de disposer d’une bonne vue d’ensemble et de pouvoir développer vos premières applications macOS.
Les nouveautés concernant Xcode, le SDK macOS, les API iCloud/NSDocument.
Enfin en conclusion, une présentation du développement pour iPhone et iPad vous permettra d’évaluer la réutilisabilité de vos compétences pour le développement d’application mobile.
Who is this course for?
Cette formation développement macOS s’adresse aux ingénieur logiciel, développeurs, analystes programmeurs, chefs de projet Contexte de développement pour une utilisation personnelle ou en entreprise.
Prerequisites
Bonnes connaissances de la programmation et d’un langage orienté objet (C++, Java, C#, PHP5 objet, …).
Si vous ne vous estimez pas complètement à l’aise en programmation nous vous conseillons de suivre au préalable le stage DOBC (“Objective C”) qui vous permettra de vous concentrer sur la partie purement macOS/Cocoa du stage présenté ici tout en consolidant votre maîtrise du langage Objective C.
Prérequis technique : Disposer d’un Mac récent, processeur i7 ou mieux, 16 Go RAM minimum, macOS 13 ou supérieur (idéalement la dernière version). Pour les formations qui nécessitent le développement d’applications : Xcode version 15.X (disponible sur l’App Store). À installer avant le début du cours.
Programme
Introduction au développement Mac
- Matériels concernés (MacBook Air, MacBook Pro, iMac, MacMini et MacPro) Tour d’horizon des applications Mac Différences entre les dernières versions de macOS Cocoa un framework complet Les objets non graphiques (framework Foundation) Les objets graphiques (framework AppKit)
L’environnement de développement d’une application Mac
- Configuration Mac nécessaire Présentation des outils et IDE disponibles Démarrer un nouveau projet avec Xcode Fenêtre Organizer Dans quels cas faut-il signer un package de distribution applicatif et le binaire applicatif ? Les pragma XCode / compilateurs ObjC Concevoir ses propres modèles (templates) de projet XCode Où trouver de l’aide pertinente ?
Le langage Objective-C
- Présentation générale et vocabulaire Comparatif langages orientés objet Objective-C, C++ et Java Philosophie des messages Les méthodes et les classes Création de classes et d’instances L’importance des conventions de nommage Différence entre classe et interface Accès et portée des variables d’instances Propagation des messages La directive @selector S’y retrouver dans la documentation officielle
La programmation objet avec Objective-C
- Catégories et extensions Les propriétés déclarées (@property) L’utilité des protocoles (@protocol) Déclarations des interfaces Une gestion de la mémoire performante Objective-C 2.0 runtime référence Comprendre et savoir utiliser le « runtime reference »
Les API Cocoa du SDK macOS
- Tour d’horizon des principaux Frameworks Les grandes lignes des méthodes de codage avec Cocoa Classes de base et hiérarchie Conventions de nommage et comportements attendus Héritage ou bien composition et connaissance ?
Les classes de base et la gestion des données avec le Framework Foundation
- Philosophie du framework foundation Les classes fondamentales communes à tous les traitements Utilité des collections String, Text & Fonts (NSCharacterSet) Dates, Times & Numbers (NSDate) La classe d’abstraction du filesystem NSFileManager Les règles de base de la gestion mémoire (semi-automatique et automatique), NSAutoReleasePool
Le framework AppKit (fenêtre, bouton, menu, contrôles, etc. )
- Vue générale des frameworks graphiques XCode (Interface Builder «built-in») : IBAction, IBOutlet et IBOutlet Collection Le framework centrale pour l’exécution (NSApplication) Les objets NSView et les événement souris/clavier La classe NSControl et ses sous-classes Afficher des tableaux d’enregistrement avec NSTableView Les protocoles de délégation les plus courants dans l’AppKit
Les applications basées sur des documents
- La classe NSDocument NSDocument et NSMetadataQuery pour iCloud
Internationalisation des applications Mac
- L’internationalisation des ressources applicatives Rappels des bonnes pratiques à propos de l’internationalisation Ce qui se fait « tout seul » et ce que doit faire le développeur ? Cas des langues non occidentales et des variantes régionales
La persistance des données (Framework CoreData)
- Architecture de CoreData Représentation graphiques des relations entre les objets avec CoreData Impact de l’utilisation de CoreData pour les objets (context) Vocabulaire (managed objects, fetch request, …) Méthodes et propriétés à utiliser pour sauvegarder/charger un objet Transaction et objet
Les notifications externes et locales
- Recevoir des événements extérieurs et locaux (Apple Push Notification Service) Comprendre le circuit de notification (Notification Server, APN Service, équipement, certificat SSL, application) Contenu d’une notification APN au format JSON (liste de propriétés, token) Mise en oeuvre du push côté client (méthodes et API utilisées, certificat) Mise en oeuvre du push côté serveur (token, gestion des notifications, feedback service) Les notifications locales
Tuning et Debug des applications Mac
- Vue d’ensemble des paramètres importants Observer les performances Adapter le code avec la compilation conditionnelle Exemples concrets de gains de performances Gestion de la mémoire par Cocoa (NSObject, retain, release, alloc, copy, …) Comportement du ramasse-miettes automatique Quand faut-il décider de gérer soi même la mémoire ? De la bonne utilisation du système de fichiers Debugger efficacement avec gdb / LLDB Améliorer les performances avec l’outil de profiling Instruments La rapidité de SQLite
Sécuriser ses applications macOS
- Le sandboxing dans macOS (Lion via Mac AppStore) APIs Apple, isolation «Bac à Sable» en Entitlements associés, …) Les « responsabilités » au niveau applicatuf Synthèse des attaques classiques Problèmes potentiels liés à l’injection de code Les failles liées à la lecture des vidéos Antivirus pour Mac ?
Distribuer son application sur le Mac App Store
- Les « contraintes » imposées par Apple La sécurité des transactions A quoi sert le certificat de distribution (contexte Mac App Store) ? Du côté des équipements (réglages, déploiement), provisionning d’un parc sous macOS. Quels outils pour le versionning de l’application distribuée via le Mac AppStore ?
- Retrait ou mise à jour d’une application d’une application sur le Mac AppStore
Présentation du développement iOS pour mobile (iPhone) et tablette (iPad)
- Quels sont les points communs entre une application Mac et une application mobile ? Tour d’horizon des classes dédiées au développement mobile Présentation d’une maquette de développement simple pour iPhone/iPad
Travaux Pratiques
Beaucoup de pratique, autour des différents frameworks présentés, consolidée par la réalisation d’une application globale de bout en bout du cahier des charges jusqu’à sa commercialisation et son déploiement.
Topics: macOS

