You are previewing iOS 5 : Développement d'applications avancées: Repoussez les limites de l'iPhone, l'iPad et l'iPod touch.
O'Reilly logo
iOS 5 : Développement d'applications avancées: Repoussez les limites de l'iPhone, l'iPad et l'iPod touch

Book Description

Ce livre vous permet de créer des applications exclusives pour tous les supports d'Apple. Bien au-delà des bases fondamentales de la plateforme, les développeurs expérimentés Rob Napier et Mugunth Kumar vous exposent toutes les techniques de développement les plus avancées, toujours écartées dans les autres ouvrages consacrés au développement iOS. Des avantages et inconvénients de l'API Core Foundation à l'optimisation des performances à l'aide de Grand Central Dispatch, en passant par l'intégration de storyboards dans la conception de votre interface utilisateur, ils vous guident étape par étape dans cet environnement de programmation, afin de développer des applications ultra-performantes, compétitives et fonctionnelles.

Cet ouvrage aborde notamment les sujets suivants :

  • Interagir avec l'environnement d'exécution d'Objective-C

  • Interroger les objets et modifier les classes lors de l'exécution

  • Contrôler le multitâches

  • Sécuriser au maximum ses applications

  • Mettre en forme le texte de manière avancée avec Core Text

  • Créer des vues de table complexes et réutilisables

  • Utiliser des blocs pour implémenter la programmation fonctionnelle

  • Implémenter une mise en cache ultra-rapide pour les applications hors connexion

  • Rentabiliser ses applications avec les achats In App

Pourquoi se contenter d'applications mobiles ordinaires alors que vous pouvez repousser leurs limites ? Grâce à iOS 5 Développement d'applications avancées, vous élargissez l'horizon de tous vos projets.

Table of Contents

  1. Cover
  2. Title
  3. Copyright
  4. Dedication
  5. About the authors
  6. Contents
  7. Introduction
  8. Partie I: Les nouveautés
    1. 1. Vue d’ensemble des nouveautés
      1. L’histoire d’iOS
      2. Les nouveautés
        1. iCloud
        2. Compilateur LLVM 3.0
        3. Comptage de références automatique
        4. Storyboards – dessinez vos interactions
        5. Personnalisation d’UIKit – le proxy d’apparence
        6. Les frameworks Twitter et Accounts
        7. Autres nouvelles fonctionnalités
      3. En résumé
      4. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
    2. 2. Maîtriser Xcode 4
      1. Maîtriser la nouvelle interface utilisateur
        1. L’éditeur à onglets
        2. Les changements de raccourcis-clavier
        3. L’éditeur de paramètres de projet
        4. Contrôle de version intégré
        5. Espaces de travail
      2. Le concept de fenêtre unique
      3. Parcourir les navigateurs
        1. Navigateur de projet
        2. Navigateur de symboles
        3. Navigateur de recherche
        4. Navigateur de problèmes
        5. Navigateur de débogage
        6. Navigateur de points de rupture
        7. Navigateur de journaux d’activité
      4. Demandez de l’aide à l’Assistant
      5. Intégration d’Interface Builder
        1. Les panneaux d’Interface Builder
        2. Générer du code à l’aide de l’éditeur Assistant et d’Interface Builder intégré
      6. Compilateur LLVM 3.0 : rendez-vous avec le Cerveau
        1. Le front-end Clang
        2. Résolution de bogues
      7. Suivre les versions avec Git
        1. L’intégration du système de contrôle des versions Git
        2. L’éditeur de versions
        3. Meilleures pratiques de Git
      8. Les schémas
        1. Pourquoi des schémas ?
        2. Les schémas définissent vos intentions
        3. Créer un schéma
        4. Partager vos schémas
      9. Des configurations de compilation que vous pouvez commenter
        1. Créer un fichier xcconfig
        2. Refactoriser le fichier des paramètres de la compilation
      10. L’organiseur de Xcode 4
        1. Provisionnement automatique de périphérique
        2. Parcourir les journaux de plantage et les états de NSLog
        3. Parcourir les données de la sandbox d’une application
        4. Gérer les référentiels
        5. Accéder aux archives de votre application
        6. Parcourir la documentation de l’Objective-C et du SDK
      11. En résumé
      12. Pour aller plus loin
        1. Documentation Apple
        2. Vidéos du WWDC
        3. Blogs
        4. Ressources web
        5. Livres
  9. Partie II: Tirer le meilleur parti des outils courants
    1. 3. Les meilleures pratiques en Objective-C
      1. Conventions de nommage
      2. Comptage de références automatique
      3. Propriétés
        1. Attributs des propriétés
        2. Meilleures pratiques liées aux propriétés
        3. Ivars privées
      4. Accesseurs
      5. Catégories et extensions
        1. +load
        2. Données de catégories à l’aide de références associatives
        3. Données de catégories à l’aide du pattern Poids-mouche
        4. Extensions de classe
      6. Protocoles formels et informels
      7. En résumé
      8. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
    2. 4. Les design patterns avec Cocoa
      1. Comprendre le schéma Modèle-Vue-Contrôleur
        1. Utiliser des classes de modèle
        2. Utiliser des classes de vue
        3. Utiliser des classes contrôleur
      2. Comprendre les délégués et les sources de données
      3. Travailler avec le pattern Commande
        1. Utiliser cible-action
        2. Utiliser les signatures de méthode et les invocations
        3. Utiliser des trampolines
        4. Utiliser Undo
      4. Utiliser le pattern Observateur
      5. Utiliser le pattern Singleton
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
    3. 5. Gérer les vues de table
      1. La hiérarchie de la classe UITableView
      2. Comprendre les vues de table
        1. UITableViewController
        2. UITableViewCell
        3. Accélérer vos tables
        4. UITableView avec un objet UITableViewCell par défaut
        5. UITableView avec un objet UITableViewCell dessiné de manière personnalisée
        6. Les éléments à éviter dans la méthode de rendu d’UITableViewCell
      3. Des cellules personnalisées qui ne se répètent pas
        1. Vues de table avancées
        2. Animer un UITableView
        3. Les meilleures pratiques des vues de table : écrire du code clair avec des contrôleurs concis
      4. Les storyboards
        1. Vos premiers pas avec les storyboards
        2. Construire des vues de table avec les storyboards
        3. Des transitions personnalisées
      5. Personnaliser vos vues à l’aide du protocole UIAppearance
      6. En résumé
      7. Pour aller plus loin
        1. Vidéos du WWDC
        2. Autres ressources
    4. 6. Mieux dessiner
      1. Les systèmes de dessin d’iOS
      2. UIKit et le cycle de dessin de la vue
      3. Le dessin de vue et la mise en forme de vue
      4. Le dessin de vues personnalisées
        1. Dessiner avec UIKit
        2. Tracés
        3. Comprendre le système de coordonnées
        4. Redimensionnement et contentMode
        5. Transformations
        6. Dessiner avec Core Graphics
        7. Mélanger UIKit et Core Graphics
        8. Gérer les contextes graphiques
      5. Optimiser le dessin avec UIKit
        1. Éviter de dessiner
        2. Mettre en cache et en arrière-plan les opérations de dessin
        3. Le dessin personnalisé et le prérendu
        4. Alignement des pixels et texte flou
        5. Alpha, opaque et hidden
      6. CGLayer
      7. En résumé
      8. Pour aller plus loin
        1. Documentation d’Apple
        2. Autres ressources
    5. 7. Des calques qui se superposent : Core Animation
      1. Les animations de vues
      2. Gérer les interactions avec l’utilisateur
      3. Dessiner avec des calques
        1. Définir directement le contenu
        2. Implémenter display
        3. Dessin personnalisé
        4. Dessiner dans votre propre contexte
      4. Déplacer les éléments
        1. Animations implicites
        2. Animations explicites
        3. Modèle et présentation
        4. Quelques mots à propos des délais
      5. En route pour la troisième dimension
      6. Décorer vos calques
      7. Animation automatique avec des actions
      8. Animer des propriétés personnalisées
      9. Core Animation et les processus
      10. En résumé
      11. Pour aller plus loin
        1. Documentation d’Apple
        2. Autres ressources
    6. 8. Gérer les erreurs
      1. Les patterns de gestion des erreurs
      2. Assertions
      3. Exceptions
      4. Intercepter et reporter les plantages
      5. Erreurs et NSError
        1. Erreur de localisation
        2. Tentative de récupération d'erreur
      6. Journaux d'activité
        1. Consigner des informations sensibles
        2. Récupérer vos journaux d'activité
      7. En résumé
      8. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
  10. Partie III: Maîtriser les outils spécialisés
    1. 9. Contrôler le multitâches
      1. Meilleures pratiques pour l'exécution en arrière-plan : "Un grand pouvoir implique de grandes responsabilités"
      2. Comprendre les boucles d'exécution
      3. Processus
      4. Une architecture multitâches centrée autour des opérations
      5. Gérer le multitâches avec Grand Central Dispatch
        1. Créer des points de synchronisation avec des barrières de distribution
        2. Les cibles et la priorité des files d'attente
        3. Les nouveautés d'iOS 5
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Sessions WWDC
        3. Autres ressources
    2. 10. Les échanges REST
      1. La philosophie REST
      2. Choisir le format d'échange des données
        1. Traiter XML avec iOS
        2. Traiter JSON avec iOS
        3. XML face à JSON
        4. Versioning du modèle
      3. Un service web hypothétique
      4. Quelques rappels importants
      5. L'architecture de RESTEngine (projet iHotelApp)
        1. NSURLConnection et les frameworks tiers
        2. Créer RESTEngine
        3. Authentifier vos appels à l'API avec des tokens d'accès
        4. Annuler des requêtes
        5. Réponses aux requêtes
        6. Codage de clés JSON
        7. Objets JSON détaillés ou sous forme de listes
        8. Objets JSON imbriqués
        9. Moins, c'est plus
        10. Gestion des erreurs
        11. Localisation
        12. Gérer des formats supplémentaires à l'aide de classes de catégorie
        13. Astuces pour améliorer les performances sur iOS
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
    3. 11. Renforcer la protection grâce aux services de sécurité
      1. Comprendre la sandbox d’iOS
      2. Sécuriser les communications réseau
        1. Le fonctionnement des certificats
        2. Vérifier la validité des certificats
        3. Déterminer le niveau de confiance d’un certificat
      3. Protection de fichier
      4. Utiliser des chaînes de clé
        1. Partager des données avec les accès de groupe
      5. Utiliser le chiffrement
        1. Vue d’ensemble d’AES
        2. Convertir des mots de passe en clés avec PBKDF2
        3. Appliquer PKCS7
        4. Choisir le mode d’opération et le vecteur d’initialisation (VI)
        5. Chiffrer les données en une seule passe
        6. Améliorer les performances de CommonCryptor
        7. Combiner le chiffrement et la compression
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Sessions WWDC
        3. Autres ressources
    4. 12. Exécuter des applications sur plusieurs plates-formes et appareils iOS
      1. Développer pour de multiples plates-formes
        1. Configurer les paramètres cibles : le SDK de base et la cible de déploiement
        2. Considérations sur le support de plusieurs SDK : les frameworks, les classes et les méthodes
        3. Vérifier la disponibilité de frameworks, classes et méthodes
      2. Détecter les capacités de l’appareil
        1. Détecter les appareils et supposer leurs capacités
        2. Détecter le hardware et les capteurs
      3. Composition d’e-mails et de SMS au sein d’une application
      4. Vérifier le support du multitâches
        1. Développer la catégorie UIDevice+Additions
      5. UIRequiredDeviceCapabilities
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Autre ressources
    5. 13. Internationalisation et localisation
      1. En quoi consiste la localisation ?
      2. Localiser des chaînes de caractères
      3. Auditer les chaînes non localisées
      4. Formater les nombres et les dates
      5. Localiser des fichiers nib
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
    6. 14. Rentabiliser son application grâce aux achats In App
      1. Avant de commencer
      2. Les produits associés aux achats In App
        1. Éléments interdits
        2. Repenser votre business model
      3. Configurer vos produits sur iTunes Connect
        1. Étape 1 : Créer un nouvel App ID pour votre application
        2. Étape 2 : Générer des profils de provisionnement
        3. Étape 3 : Ajouter votre application
        4. Étape 4 : Créer les entrées des produits In App
        5. Étape 5 : Générer le secret partagé
        6. Étape 6 : Créer un compte d’utilisateur de test
      4. Implémentation des achats In App
      5. À la découverte de MKStoreKit
        1. Pourquoi MKStoreKit ?
        2. Fonctionnement de MKStoreKit
        3. Personnaliser MKStoreKit
      6. Traiter l’achat
      7. Tester les achats In App
      8. Dépannage
        1. Identifiants de produits invalides
        2. Connexion impossible à iTunes Store
        3. Vous avez déjà acheté ce produit, mais il n’est pas téléchargé
      9. En résumé
      10. Pour aller plus loin
        1. Documentation Apple
        2. Blogs
        3. Autres ressources
  11. Partie IV: Repousser les limites
    1. 15. Le plus grand atout de Cocoa : le codage et l’observation clé-valeur
      1. Codage clé-valeur
        1. Assigner des valeurs avec KVC
        2. Traverser des propriétés
        3. KVC et les collections
        4. KVC et les dictionnaires
        5. KVC et les non-objets
        6. Messagerie d’ordre supérieur et KVC
        7. Opérateurs de collection
      2. Observation clé-valeur
        1. KVO et les collections
        2. Comment KVO est-il implémenté ?
      3. Les compromis de KVO
      4. En résumé
      5. Pour aller plus loin
        1. Documentation Apple
    2. 16. Penser différemment : les blocs et la programmation fonctionnelle
      1. À quoi correspond un bloc ?
        1. Pourquoi recourir à la programmation fonctionnelle ?
        2. Une UIAlertView “fonctionnelle”
      2. Déclarer un bloc
        1. Portée des variables
        2. La pile et le tas
      3. Implémenter un bloc
        1. UIAlertViews basés sur des blocs
        2. RESTEngine basé sur des blocs
      4. Les blocs et les accès concurrentiels
        1. Les files d’attente de GCD
        2. NSOperationQueue face aux files d’attente de GCD
      5. Méthodes Cocoa basées sur des blocs
        1. Animations d’UIView à l’aide de blocs
        2. Présenter et masquer les contrôleurs de vue
        3. TweetCompose et In App Email/SMS
        4. Énumération de dictionnaire à l’aide de NSDictionary enumerateWithBlock
        5. Rechercher des méthodes basées sur des blocs
      6. Plates-formes supportées
      7. En résumé
      8. Pour aller plus loin
        1. Documentation Apple
        2. Blogs
        3. Références de code source
    3. 17. Travailler hors connexion
      1. Les raisons de travailler hors connexion
      2. Stratégies de mise en cache
        1. Les méthodes de stockage du cache
        2. Le versioning du cache
      3. Architecture d’AppCache
      4. Versioning du cache
        1. Invalider le cache
      5. Mettre en cache les données dans la mémoire
        1. Conception d’AppCache
        2. Gérer les avertissements mémoire
        3. Gérer les notifications sur la fin et l’entrée en arrière-plan
      6. Mettre des images en cache
        1. Les composants d’ImageCache
      7. Utiliser iCloud
        1. Gérer le stockage de documents et de données clé-valeur sur iCloud
        2. Comprendre le stockage de données sur iCloud
      8. En résumé
      9. Pour aller plus loin
        1. Documentation Apple
        2. Ouvrages
        3. Autres ressources
    4. 18. Mettre en forme le texte
      1. Les éléments de base : les champs, les vues et les libellés
      2. Les vues web pour du texte riche
        1. Afficher et accéder à du HTML dans une vue Web
        2. Répondre aux interactions avec l’utilisateur
        3. Dessiner des vues Web dans les vues Scroll et Table
        4. Édition riche dans les vues Web
      3. Core Text
        1. Gérer le gras, l’italique et le soulignement
        2. Chaînes attribuées
        3. Styles de paragraphe
        4. Mise en forme simple avec CTFramesetter
        5. Créer des cadres pour les tracés non contigus
        6. Compositeurs, lignes, séquences et glyphes
        7. Dessiner le long d’une courbe
      4. Comparaison des options de texte riche
      5. Options alternatives
        1. NSAttributedString-Additions-for-HTML
        2. CoreTextWrapper
        3. OmniUI
      6. En résumé
      7. Pour aller plus loin
        1. Documentation Apple
        2. Sessions WWDC
        3. Autres ressources
    5. 19. Core Foundation
      1. Les types de Core Foundation
      2. Conventions de nommage et gestion de la mémoire
      3. Allocateurs
      4. Introspection
      5. Chaînes et données
        1. Constantes de chaînes
        2. Créer des chaînes
        3. Convertir vers des chaînes C
        4. Autres opérations sur les chaînes
        5. Mémoire de sauvegarde de la chaîne
        6. CFData
      6. Collections
        1. CFArray
        2. CFDictionary
        3. CFSet, CFBag
        4. Autres collections
        5. Fonctions de rappel
        6. Transtypage de pont
      7. En résumé
      8. Pour aller plus loin
        1. Documentation Apple
        2. Autres références
    6. 20. Objective-C avancé
      1. Comprendre les classes et les objets
      2. Utiliser les méthodes et les propriétés
      3. Fonctionnement du système d’envoi des messages
        1. Implémentations dynamiques
        2. Transfert rapide
        3. Transfert normal
        4. Échec du transfert
        5. Les déclinaisons d’objc_msgSend
      4. Swizzling de méthode
      5. Swizzling ISA
      6. Swizzling de méthode face au swizzling ISA
      7. En résumé
      8. Pour aller plus loin
        1. Documentation Apple
        2. Autres ressources
  12. Index