iphone et ipad Développement d'applications en Objective-C - Version numérique



Documents pareils
Manipulation 4 : Application de «Change».

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

BES WEBDEVELOPER ACTIVITÉ RÔLE

PHP 5.4 Développez un site web dynamique et interactif

Programmation MacOSX / ios

Introduction au langage C

Créer et partager des fichiers


Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Devenez un véritable développeur web en 3 mois!

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation Web. Madalina Croitoru IUT Montpellier

Avant-propos Certificats et provisioning profiles

Formation WinDev Mobile

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Optimiser pour les appareils mobiles

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Programmer en JAVA. par Tama

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Notions fondamentales du langage C# Version 1.0

Introduction à MATLAB R

F0RMAT I0N BUREAUTIQUE

Point sur les solutions de développement d apps pour les périphériques mobiles

UE C avancé cours 1: introduction et révisions

FORMATION KAWET. Formation : Créer une appli mobile avec Kawet

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Iphone vs. Android. Mardi 17 Novembre 2009 Paris, la Défense. Xavier PARADON, Directeur Technique Valtech Training

EIP 2012 Projet Livepad. Documentation technique 1.5

Déploiement de l iphone et de l ipad Gestion des appareils mobiles (MDM)

Réinventer la sensation de lire

Clé USB OTG PNY Duo-Link pour iphone et ipad. Mode d'emploi

Table des matières Introduction Démarrage Les composants graphiques... 26

de logiciels Web 2.0, SaaS Logiciels collaboratifs Portails pour entreprises Développement iphone, Android WebApp HTML5 Mobile marketing

Le langage C. Séance n 4

4. SERVICES WEB REST 46

M2 SIAW - Exemples de stages réalisés. Gabriella Salzano - Document de travail - 28/1/2015

Présentation du PL/SQL

Guide d utilisation de «Partages Privés»

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Développez vos applications pour. iphone, ipod Touch, ipad

Fiche produit. Important: Disponible en mode SaaS et en mode dédié

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Principe de fonctionnement du lanceur d'application "AdisTlsStartCfgLotus"

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

CDC 4 DISPONIBLE : 25 NOVEMBRE 2014

Fiche produit Site Monitor v4

Configuration du FTP Isolé Active Directory

as Architecture des Systèmes d Information

Fiche technique Les fonctionnalités selon les versions de Sage CRM. Introduction

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Un logiciel pour aller plus loin dans la gestion de vos espaces. Mémo technique

SOMMAIRE GUIDE D UTILISATION DU WEBMAIL. vous guide

Groupe Eyrolles, 2003, ISBN : X

Alfresco Guide Utilisateur

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

CAHIER DES CHARGES DE REALISATION DE SITE INTERNET

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Reporting Services - Administration

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

TBI-DIRECT. Bridgit. Pour le partage de votre bureau. Écrit par : TBI Direct.

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Programme ASI Développeur

Contenu de la version 3.4 C I V I L N E T A D M I N I S T R A T I O N

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

les techniques d'extraction, les formulaires et intégration dans un site WEB

Authentification unique Eurécia

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

FileMaker Server 14. Guide de démarrage

//////////////////////////////////////////////////////////////////// Administration bases de données

Q-Checker pour V6 Release 2.1

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

DLTA Deploy. Une offre unique de gestion de flotte mobile pour iphone, ipad & ipod touch. La solution de gestion de flotte mobile pour ios

Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8

Guide de configuration. Logiciel de courriel

Module Criteo Tags et Flux pour Magento

Notice d utilisation de la Base de Données des décisions du Comité Directeur National

SharePoint Foundation 2013 Construire un intranet collaboratif en PME (édition enrichie de vidéos)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Business Intelligence

COSWIN MOBILE SERVEUR DE SYNCHRONISATION GUIDE D INSTALLATION

TigerPro CRM Application mobile

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Modélisation et Gestion des bases de données avec mysql workbench

ECLIPSE ET PDT (Php development tools)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Diffuser un contenu sur Internet : notions de base... 13

CATALOGUE Parcours de Formations E-Learning BILAN FORMATION STAGE. e-learning

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Transcription:

Le langage C (bases) 1. Langages utilisables sous Xcode (Mac OS X) 21 2. Les bases du langage de programmation C 22 2.1 Un premier projet C sous Xcode en mode Console 23 2.1.1 Création du projet 23 2.1.2 Exécution du projet 26 2.2 Variables 27 2.2.1 Création du projet 27 2.2.2 Nom du fichier principal 28 2.2.3 Traitement programmé 29 2.2.4 Formalisation des commentaires 29 2.2.5 Commentaires généraux dans chaque fichier 29 2.2.6 Importation des bibliothèques (librairies) 30 2.2.7 Structure générale de la fonction main 30 2.2.8 Explications détaillées de la fonction main 31 2.2.9 Exécution du projet 35 2.3 Spécifieurs de format 35 2.3.1 Création du projet 35 2.3.2 Exécution du projet 37 2.4 Opérateurs 37 2.4.1 Création du projet 37 2.4.2 Exécution du projet 39 2.5 Structure conditionnelle If... Else 40 2.5.1 Problématique 40 2.5.2 Création du projet 40 2.5.3 Initialisation des variables 43 2.5.4 if (forme simple) 43 2.5.5 if... else 44 2.5.6 Imbrication d instructions if 44 2.5.7 Une erreur classique à éviter 45 2.5.8 Vérifier l égalité de deux variables 46 2.5.9 Vérifier l égalité d une variable par rapport à une valeur constante 46 1/21

2.5.10 Exécution du projet 48 2.6 Structure conditionnelle Switch 48 2.6.1 Problématique 48 2.6.2 Création du projet 48 2.6.3 Principe de fonctionnement du Switch 51 2.6.4 Instruction break 52 2.6.5 Instruction default 54 2.7 Structures itératives while et do while 55 2.7.1 Problématique 55 2.7.2 Création du projet 55 2.7.3 L instruction while 56 2.7.4 La pré-incrémentation dans un while 57 2.7.5 La post-incrémentation dans un while 57 2.7.6 L instruction do... while 58 2.7.7 L instruction break dans une boucle 58 2.7.8 L instruction continue dans une boucle 59 2.7.9 Exécution du projet 60 2.8 Structure itérative for 61 2.8.1 Problématique 61 2.8.2 Création du projet 61 2.8.3 Incrémentation par pas de 1 62 2.8.4 Incrémentation par pas différent de 1 62 2.8.5 Décrémentation 63 2.9 Utilisation de fonction (sans passage de paramètres) 63 2.9.1 Problématique 63 2.9.2 Création du projet 63 2.9.3 Prototypes des fonctions 65 2.9.4 Principe de fonctionnement 65 2.9.5 Exécution du projet 66 2.10 Utilisation de fonction (avec passage de paramètres) 66 2.10.1 Problématique 66 2.10.2 Création du projet 66 2.10.3 Fonction accelerervoiture 68 2.10.4 Fonction ralentirvoiture 69 2.10.5 Exécution du projet 70 2.11 Traitement récursif 70 2/21

2.11.1 Problématique 70 2.11.2 Création du projet 71 2.11.3 Fonction accelerervoiture 72 2.11.4 Exécution du projet 73 2.12 Portée des variables 73 2.12.1 Problématique 73 2.12.2 Création du projet 74 2.12.3 Analyse de la portée des variables 75 2.12.4 Exécution du projet 76 2.13 Passage de paramètres par valeur et par référence 77 2.13.1 Problématique 77 2.13.2 Création du projet 77 2.13.3 Passage de paramètres par valeur 79 2.13.4 Passage de paramètres par référence 80 2.13.5 Exécution du projet 82 2.14 Occupation mémoire 83 2.14.1 Problématique 83 2.14.2 Création du projet 83 2.14.3 Commentaire du code 85 2.14.4 Exécution du projet 88 2.15 Tableaux (valeurs numériques) 89 2.15.1 Problématique 89 2.15.2 Création du projet 89 2.15.3 Commentaire du code 91 2.15.4 Exécution du projet 92 2.16 Tableaux (Chaînes de caractères) 92 2.16.1 Problématique 92 2.16.2 Création du projet 92 2.16.3 Commentaire du code 95 2.16.4 Exécution du projet 98 2.17 Structures C 99 2.17.1 Problématique 99 2.17.2 Création du projet 99 2.17.3 Commentaire du code 101 2.17.4 Exécution du projet 104 2.18 Énumérations en C 104 3/21

2.18.1 Problématique 104 2.18.2 Création du projet 105 2.18.3 Commentaire du code 108 2.18.4 Exécution du projet 111 Structuration des projets C sous Xcode 1. Structuration d'un projet C 113 1.1 Problématique 113 1.2 Création du projet 114 1.3 Répartition du code en plusieurs fichiers 114 1.3.1 Fichier main.c 114 1.3.2 Fichier affichermarque.h 115 1.3.3 Fichier affichermarque.c 116 1.3.4 Fichier affichermodele.h 117 1.3.5 Fichier affichermodele.c 117 1.4 Exécution du projet 118 2. Préférences générales de l'environnement Xcode 118 2.1 Onglet General 119 2.2 Onglet Code Sense 119 2.3 Onglet Building 120 2.4 Onglet Distributed Builds 120 2.5 Onglet Debugging 121 2.6 Onglet Keys Bindings 121 2.7 Onglet Text Editing 122 2.8 Onglet Fonts & Colors 122 2.9 Onglet Indentation 123 2.10 Onglet File Types 123 2.11 Onglet Source Trees 124 2.12 Onglet SCM 124 2.13 Onglet Documentation 125 4/21

Bases Objective-C (mode Console) 1. Les bases du langage de programmation Objective-C (mode Console) 127 2. Un premier projet Objective-C sous Xcode en mode Console 128 2.1 Création du projet 128 2.2 Exécution du projet 132 2.3 Commentaire du fichier Premier projet Objective-C.m 132 3. La gestion des chaînes de caractères 134 3.1 Problématique 134 3.2 Création du projet 134 3.3 Les différentes séquences de code 135 3.3.1 Séquence n 1 : Chaîne de caractères version C (pointeur de caractère) 135 3.3.2 Séquence n 2 : Chaîne de caractères version C (tableau de caractères) 138 3.3.3 Séquence n 3 : Chaîne de caractères version Objective-C (NSString) 140 3.3.4 Séquence n 4 : Chaîne de caractères version Objective-C (méthode stringwithstring) 141 3.3.5 Séquence n 5 : Chaîne de caractères modifiable (NSMutableString) 141 3.3.6 Séquence n 6 : Copie d une chaîne de caractères 142 3.3.7 Séquence n 7 : Concaténation de chaînes de caractères 143 3.3.8 Séquence n 8 : Copie du contenu d une chaîne de caractères 144 3.3.9 Séquence n 9 : Recherche dans une chaîne de caractères (rangeofstring) 145 3.3.10 Séquence n 10 : Recherche dans une chaîne de caractères (NSNotFound) 146 3.3.11 Séquence n 11 : Remplacement dans une chaîne de caractères (replacecharactersinrange) 147 3.3.12 Séquence n 12 : Combinaison de la recherche et du remplacement dans une chaîne de caractères 147 3.3.13 Séquence n 13 : Suppression d une partie d une chaîne de caractères 148 3.3.14 Séquence n 14 : Extraction de caractères depuis une chaîne de caractères (substringwithrange) 149 5/21

3.3.15 Séquence n 15 : Extraction de caractères depuis une chaîne de caractères (substringfromindex) 150 3.3.16 Séquence n 16 : Insertion de caractères dans une chaîne de caractères 150 3.3.17 Séquence n 17 : Mise en forme d une chaîne de caractères 151 3.3.18 Séquence n 18 : Conversion d une chaîne de caractères en entier 152 3.3.19 Séquence n 19 : Conversion d une chaîne de caractères en réel (double) 152 3.3.20 Séquence n 20 : Conversion d une chaîne de caractères en réel (float) 153 4. La gestion de collections (tableaux, dictionnaires et ensembles) 153 4.1 Problématique 153 4.2 Création du projet 154 4.3 Les différentes séquences de code 155 4.3.1 Séquence n 1 : Initialisation d un tableau (arraywithobjects) 155 4.3.2 Séquence n 2 : Affichage des éléments d un tableau 155 4.3.3 Séquence n 3 : Affichage des éléments d un tableau avec un énumérateur 156 4.3.4 Séquence n 4 : Tableau multidimensionnel 157 4.3.5 Séquence n 5 : Affichage d un élément d un tableau multidimensionnel 157 4.3.6 Séquence n 6 : Affichage de l ensemble des éléments d un tableau multidimensionnel 158 4.3.7 Séquence n 7 : Création d un dictionnaire à partir d un tableau de clés et d un tableau de valeurs (dictionarywithobject... forkey) 159 4.3.8 Séquence n 8 : Création d un dictionnaire à partir de couples clé-objet (dictionarywithobjectsandkeys) 161 4.3.9 Séquence n 9 : Création d un dictionnaire modifiable 161 4.3.10 Séquence n 10 : Affichage d un dictionnaire modifiable 162 4.3.11 Séquence n 11 : Suppression d un élément d un dictionnaire modifiable 164 4.3.12 Séquence n 12 : Création d un ensemble 164 4.3.13 Séquence n 13 : Création d un ensemble modifiable 166 5. La gestion des fichiers 167 5.1 Problématique 167 5.2 Création du projet 168 6/21

5.3 Les différentes séquences de code 169 5.3.1 Séquence n 1 : Déclarations 169 5.3.2 Séquence n 2 : Lecture d un fichier (stringwithcontentsoffile) 169 5.3.3 Séquence n 3 : Lecture d un fichier (stringwithcontentsofurl) 171 5.3.4 Séquence n 4 : Écriture dans un fichier 172 5.3.5 Séquence n 5 : Lecture d un fichier caractère par caractère 172 POO en Objective-C (mode console) 1. Projet POO_Voiture_V01 : Création d une classe en Objective-C 175 1.1 La notion de Programmation Orientée Objet en Objective-C 175 1.2 Problématique 176 1.3 Création du projet 176 1.4 Les différentes séquences de code 178 1.4.1 Séquence n 1 : Création de l interface d une classe 178 1.4.2 Séquence n 2 : Implémentation d une classe 179 1.4.3 Séquence n 3 : Utilisation d une classe 180 1.5 Exécution du projet 181 2. Projet POO_Voiture_V02 : Organisation du code pour le structurer 181 2.1 Problématique 181 2.2 Création du projet 181 2.3 Fichiers du projet 182 2.3.1 POO_Voiture_V02.m 182 2.3.2 Voiture.h 183 2.3.3 Voiture.m 184 2.4 Exécution du projet 185 3. Projet POO_Voiture_V03 : Création des méthodes getter et setter 186 3.1 Problématique 186 3.2 Fichiers du projet 186 3.2.1 Voiture.h 186 3.2.2 Voiture.m 187 3.2.3 POO_Voiture_V03.m 189 7/21

3.3 Exécution du projet 191 4. Projet POO_Voiture_V04 : Accessibilité publique, protégée ou privée des propriétés 191 4.1 Problématique 191 4.2 Fichiers du projet 191 4.2.1 Voiture.h 191 4.2.2 Voiture.m 192 4.2.3 POO_Voiture_V04.m 193 4.3 Exécution du projet 195 5. Projet POO_Voiture_V05 : Mise en place de l héritage 195 5.1 Problématique 195 5.2 Fichiers du projet 195 5.2.1 Vehicule.h 195 5.2.2 Vehicule.m 197 5.2.3 Voiture.h 198 5.2.4 Voiture.m 200 5.2.5 POO_Voiture_V05.m 200 5.3 Exécution du projet 205 6. Projet POO_Voiture_V06 : La substitution de méthode 205 6.1 Problématique 205 6.2 Fichiers du projet 205 6.2.1 Vehicule.h 205 6.2.2 Vehicule.m 206 6.2.3 Voiture.h 206 6.2.4 Voiture.m 207 6.2.5 POO_Voiture_V06.m 208 6.3 Exécution du projet 208 7. Projet POO_Voiture_V07 : Tableau d objets 209 7.1 Problématique 209 7.2 Fichiers du projet 209 7.2.1 Vehicule.h, Vehicule.m, Voiture.h et Voiture.m 209 7.2.2 POO_Voiture_V07.m 209 8/21

7.3 Exécution du projet 213 8. Projet POO_Voiture_V08 : Méthodes d instance et méthodes de classe 214 8.1 Problématique 214 8.2 Fichiers du projet 214 8.2.1 Voiture.h 214 8.2.2 Voiture.m 215 8.2.3 POO_Voiture_V08.m 217 8.3 Exécution du projet 219 9. Projet POO_Voiture_V09 : Getter et setter implémentés automatiquement 219 9.1 Problématique 219 9.2 Fichiers du projet 219 9.2.1 Voiture.h 219 9.2.2 Voiture.m 221 9.2.3 POO_Voiture_V09.m 222 9.3 Exécution du projet 225 10. Projet POO_Voiture_V10 : Création d un protocole 226 10.1 Problématique 226 10.2 Fichiers du projet 226 10.2.1 Voiture.h 226 10.2.2 Voiture.m 228 10.2.3 VoitureCourse.h 229 10.2.4 POO_Voiture_V10.m 231 10.3 Exécution du projet 234 POO en Objective-C (mode graphique) 1. Projet GUI_01 : Un premier projet C sous Xcode en mode graphique 235 1.1 Les bases de la POO en Objective-C (mode graphique) 235 1.2 Création du projet 236 1.3 Dossiers du projet 239 1.3.1 Dossier Classes 239 9/21

1.3.2 Dossier Other sources 239 1.3.3 Dossier Resources 240 1.3.4 Dossier Frameworks 240 1.3.5 Dossier Products 240 1.4 Exécution du projet 240 1.5 Scripts des classes 241 1.5.1 GUI_01AppDelegate.h (header de la classe) 242 1.5.2 GUI_01AppDelegate.m (implémentation de la classe) 242 1.5.3 main.m (script principal lanceur de l'application) 245 1.5.4 GUI_01_Prefix.pch (script des directives de pré-compilation) 245 1.6 Principes de fonctionnement du projet 245 2. Projet GUI_02 : Hello World sur iphone 246 2.1 Objectifs 246 2.2 Fichier GUI_02-Info.plist 247 2.2.1 Propriété «Icon file» (CFBundleIconFile) 247 2.2.2 Propriété «Bundle display name» (CFBundleDisplayName) 247 2.2.3 Écran de démarrage 247 2.3 Délégué de l application 248 2.3.1 Design Pattern «Délégation de contrôle» 248 2.3.2 applicationdidfinishlaunching 248 2.3.3 applicationwillterminate 249 2.3.4 applicationdidreceivememorywarning 250 2.3.5 applicationwillresignactive 250 2.4 Interface Builder 251 2.4.1 Fenêtres principales de l'environnement Interface Builder 251 2.4.2 Définition d une propriété pour Interface Builder 256 2.4.3 Création de liens entre Interface Builder et le code de l application 256 2.4.4 Déclaration du lien entre l application et son délégué 258 2.5 Création d une nouvelle vue avec Interface Builder 259 2.5.1 Ajout d'une nouvelle vue au projet 259 2.5.2 Ajout d'un label sur la vue 261 2.5.3 Appel à la vue 268 3. Projet GUI_03 : Gérer un bouton 271 10/21

3.1 Objectifs 271 3.2 Scripts GUI_03AppDelegate.h et GUI_03AppDelegate.m 272 3.2.1 GUI_03AppDelegate.h (header de la classe) 272 3.2.2 GUI_03AppDelegate.m (implémentation de la classe) 272 3.3 Première exécution du projet 273 3.3.1 Premières interventions sur mainwindow.xib sous Interface Builder 274 3.3.2 Création de la classe GUI_03ViewController sous Xcode 278 3.3.3 Finalisation du paramétrage de mainwindow.xib sous Interface Builder 284 4. Projet GUI_04 : Saisie de texte 292 4.1 Objectifs 292 4.2 Scripts GUI_04AppDelegate.h et GUI_04AppDelegate.m 293 4.3 Ajout de la zone de saisie sous Interface Builder 293 4.4 Modification du contrôleur (scripts GUI_04ViewController.het GUI_04ViewController.m) 294 4.5 Finalisation du paramétrage de mainwindow.xib sous Interface Builder 295 4.6 Exécution du projet 297 5. Projet GUI_05 : Le contrôle de saisie 297 5.1 Objectifs 297 5.2 Modification de l'en-tête du contrôleur (script GUI_05ViewController.h) 298 5.3 Modification de l'implémentation du contrôleur (script GUI_05ViewController.m) 300 5.4 Exécution du projet 304 Applications de type Calculette 1. Présentation des applications du chapitre 305 2. Projet Calculette1 305 2.1 Objectifs 305 2.2 Structure du projet 306 2.3 Les Frameworks à intégrer dans le projet 307 2.4 Quelques éléments sur l'interface (Calculette1ViewController.xib) 307 2.5 Code source de l'application 309 11/21

2.5.1 Code du script Calculette1ViewController.h 309 2.5.2 Code du script Calculette1ViewController.m 311 3. Projet Calculette2 314 3.1 Objectifs 314 3.2 Structure du projet 314 3.3 Les Frameworks à intégrer dans le projet 315 3.4 Quelques éléments sur l'interface (Calculette2ViewController.xib) 315 3.5 Code source de l'application 317 3.5.1 Code du script Calculette2ViewController.h 317 3.5.2 Code du script Calculette2ViewController.m 318 Gestion de molettes (Picker) 1. Présentation des applications du chapitre 325 2. Projet MoletteDate 325 2.1 Objectifs 325 2.2 Les Frameworks à intégrer dans le projet 326 2.3 Quelques éléments sur l'interface (MoletteDateViewController.xib) 327 2.4 Code source de l'application 328 2.4.1 Code du script MoletteDateViewController.h 328 2.4.2 Code du script MoletteDateViewController.m 329 3. Projet MoletteVoiture 330 3.1 Objectifs 330 3.2 Les Frameworks à intégrer dans le projet 331 3.3 Quelques éléments sur l'interface(molettevoitureviewcontroller.xib) 331 3.4 Code source de l'application 333 3.4.1 Code du script MoletteVoitureViewController.h 333 3.4.2 Code du script MoletteVoitureViewController.m 335 Gestion de la persistance de données 12/21

1. Présentation des applications du chapitre 341 2. Projet Plist 341 2.1 Objectifs 341 2.2 Notion de fichier PList 342 2.3 Les Frameworks à intégrer dans le projet 343 2.4 Quelques éléments sur l'interface (PlistViewController.xib) 344 2.5 Code source de l'application 345 2.5.1 Code du script PlistViewController.h 345 2.5.2 Code du script PlistViewController.m 346 3. Projet Ascii 350 3.1 Objectifs 350 3.2 Les Frameworks à intégrer dans le projet 351 3.3 Quelques éléments sur l'interface (AsciiViewController.xib) 352 3.4 Code source de l'application 353 3.4.1 Code du script AsciiViewController.h 353 3.4.2 Code du script AsciiViewController.m 354 4. Projet Preferences 357 4.1 Objectifs 357 4.2 Les Frameworks à intégrer dans le projet 357 4.3 Quelques éléments sur l'interface (PreferencesViewController.xib) 358 4.4 Code source de l'application 358 4.4.1 Code du script PreferencesViewController.h 358 4.4.2 Code du script PreferencesViewController.m 359 5. Projet SQLite 361 5.1 Objectifs 361 5.2 Les Frameworks à intégrer dans le projet 364 5.3 Quelques éléments sur l'interface (SQLiteViewController.xib) 365 5.4 Structure générale du projet 365 5.5 Installation de la BDD SQLite 367 13/21

5.6 Code source de l'application 369 5.6.1 Code du script SQLiteViewController.h 369 5.6.2 Code du script SQLiteViewController.m 371 5.6.3 Code du script SQLManager.h 374 5.6.4 Code du script SQLManager.m 376 5.6.5 Code du script Performance.h 382 5.6.6 Code du script Performance.h 383 6. Projet MySQL 383 6.1 Objectifs 383 6.2 Les Frameworks à intégrer dans le projet 386 6.3 Code source de l'application (volet serveur SOAP) 386 6.3.1 Code du web service (écrit en PHP) 386 6.3.2 La classe PHP nusoap 390 6.3.3 Quelques mots sur le protocole SOAP 390 6.4 Les Frameworks à intégrer dans le projet 391 6.5 Code source de l'application (volet Objective-C) 391 6.5.1 Code du script MySQLViewController.h 391 6.5.2 Code du script MySQLViewController.m 392 Gestion des images 1. Projet Diaporama1 401 1.1 Objectifs 401 1.2 Les Frameworks à intégrer dans le projet 402 1.3 Les fichiers XIB du projet 402 1.4 Code source de l'application 403 1.4.1 Code du script Diaporama1ViewController.h 403 1.4.2 Code du script Diaporama1ViewController.m 403 2. Projet Diaporama2 405 2.1 Objectifs 405 2.2 Les Frameworks à intégrer dans le projet 405 2.3 Code de l'application 405 14/21

Gestion des listes (TableView) 1. Présentation des TableView 407 2. Projet TableView1 407 2.1 Objectifs 407 2.2 Les Frameworks à intégrer dans le projet 408 2.3 Les fichiers XIB du projet 409 2.4 Code source de l'application 409 2.4.1 Code du script Table1ViewController.h 409 2.4.2 Code du script Table1ViewController.m 410 3. Projet TableView2 412 3.1 Objectifs 412 3.2 Les Frameworks à intégrer dans le projet 413 3.3 Les fichiers XIB du projet 414 3.4 Code source de l'application 414 3.4.1 Code du script Table2ViewController.h 414 3.4.2 Code du script Table2ViewController.m 414 4. Projet TableView3 418 4.1 Objectifs 418 4.2 Les Frameworks à intégrer dans le projet 419 4.3 Les fichiers XIB du projet 419 4.4 Code source de l'application 419 4.4.1 Code du script Table3ViewController.h 419 4.4.2 Code du script Table3ViewController.m 420 4.4.3 Code du script DetailViewController.h 421 4.4.4 Code du script DetailViewController.m 421 Numérisation de codes à barres 1. Principe de base 423 15/21

2. Projet CodeBarre 425 2.1 Objectifs 425 2.2 Les Frameworks à intégrer dans le projet 426 2.3 Les fichiers XIB du projet 426 2.4 Code source de l'application 427 2.4.1 Code du script CodeBarreViewController.h 427 2.4.2 Code du script CodeBarreViewController.m 428 Géolocalisation 1. Principe de base 431 2. Projet Localisation1 431 2.1 Objectifs 431 2.2 Les Frameworks à intégrer dans le projet 432 2.3 Les fichiers XIB du projet 433 2.4 Code source de l'application 433 2.4.1 Code du script Localisation1ViewController.h 433 2.4.2 Code du script Localisation1ViewController.m 434 3. Projet Localisation2 436 3.1 Objectifs 436 3.2 Les coordonnées de villes 437 3.3 Structure du projet 438 3.4 Les Frameworks à intégrer dans le projet 439 3.5 Code source de l'application 439 3.5.1 Code du script Localisation2ViewController.h 439 3.5.2 Code du script Localisation2ViewController.m 441 3.5.3 Code du script Punaise.h 446 3.5.4 Code du script Punaise.m 447 3.5.5 Code du script AnnotationView.h 448 3.5.6 Code du script AnnotationView.m 449 16/21

Parsage de fichiers aux formats XML et JSON 1. Principe de base 451 2. Projet XML 451 2.1 Objectifs 451 2.2 Les données XML 452 2.3 Structure du projet 453 2.4 Les Frameworks à intégrer dans le projet 453 2.5 Les fichiers XIB du projet 454 2.6 Code source de l'application 454 2.6.1 Code du script XMLViewController.h 454 2.6.2 Code du script XMLViewController.m 455 2.6.3 Code du script XMLToObjectparser.h 458 2.6.4 Code du script XMLToObjectparser.m 459 2.6.5 Code du script Voiture.h 462 2.6.6 Code du script Voiture.m 463 3. Projet JSON 463 3.1 Objectifs 463 3.2 Qu'est-ce que JSON? 465 3.3 Structure du projet 466 3.4 Les Frameworks à intégrer dans le projet 467 3.5 Les fichiers XIB du projet 467 3.6 Code source de l'application 467 3.6.1 Code du script JSONViewController.h 467 3.6.2 Code du script JSONViewController.m 468 Transfert de données via le protocole FTP 1. Principe de base 473 2. Projet FTP 473 17/21

2.1 Objectifs 473 2.2 Structure du projet 475 2.3 Les Frameworks à intégrer dans le projet 475 2.4 Les fichiers XIB du projet 475 2.5 Code source de l'application 476 2.5.1 Code du script FTPViewController.h 476 2.5.2 Code du script FTPViewController.m 476 Gestion des contacts 1. Principe de base 479 2. Projet Contacts 479 2.1 Objectifs 479 2.2 Les Frameworks à intégrer dans le projet 482 2.3 Les fichiers XIB du projet 483 2.4 Code source de l'application 483 2.4.1 Code du script ContactsViewController.h 483 2.4.2 Code du script ContactsViewController.m 485 Émission de mails 1. Principe de base 493 2. Projet Mail 493 2.1 Objectifs 493 2.2 Les Frameworks à intégrer dans le projet 496 2.3 Les fichiers XIB du projet 497 2.4 Code source de l'application 497 2.4.1 Code du script MailViewController.h 497 2.4.2 Code du script MailViewController.m 498 18/21

Gestion de flux RSS 1. Principe de base 503 2. Projet RSS 504 2.1 Objectifs 504 2.2 Les Frameworks à intégrer dans le projet 505 2.3 Les fichiers XIB du projet 506 2.4 Flux RSS du site sportauto.fr 507 2.5 Code source de l'application 508 2.5.1 Code du script RSSViewController.h 508 2.5.2 Code du script RSSViewController.m 508 Prise de photos et publication 1. Principe de base 517 2. Projet UploadPhoto 517 2.1 Objectifs 517 2.2 Les Frameworks à intégrer dans le projet 520 2.3 Les fichiers XIB du projet 521 2.4 Code source de l'application 522 2.4.1 Code du script UploadPhotoViewController.h 522 2.4.2 Code du script UploadPhotoViewController.m 523 Programmation sans Interface Builder 1. Principe de base 527 2. Le projet SansXIB 527 2.1 Objectifs 527 19/21

2.2 Les Frameworks à intégrer dans le projet 528 2.3 Template du projet 529 2.4 Code source de l'application 529 2.4.1 Code du script SansXIBAppDelegate.h 529 2.4.2 Code du script SansXIBAppDelegate.m 529 2.4.3 Code du script SansXIBViewController.h 529 2.4.4 Code du script SansXIBViewController.m 530 La gestion du dessin 1. Le dessin sous Objective-C 533 2. Projet Dessin 534 2.1 Objectifs 534 2.2 Les Frameworks à intégrer dans le projet 534 2.3 Code source de l'application 535 2.3.1 Code du script Dessin.h 535 2.3.2 Code du script Dessin.m 535 Gestion de la mémoire 1. Les bases de la gestion de la mémoire en Objective-C 539 2. Gestion explicite de la mémoire 540 2.1 La référence absolue sur le sujet 540 2.2 La notion de compteur de références 540 2.3 Les cas problématiques 541 2.4 La règle de base dans la gestion de la mémoire 541 2.5 La libération de l espace mémoire 542 2.6 La limite du système du compteur de références 542 3. Gestion semi-automatique via AutoreleasePool 542 20/21

3.1 Présentation du dispositif AutoreleasePool 543 3.2 Mise en œuvre de l'autoreleasepool 543 3.2.1 Mise en pool via les méthodes de commodité 543 3.2.2 Mise en pool explicite 544 3.2.3 Conservation d'objets placés en autorelease pool 544 Publication sur l'app Store 1. Les différents modes de déploiement 545 1.1 Déploiement sur l'app Store 545 1.2 Déploiement Ad Hoc 546 1.3 Déploiement In-House 546 2. Les concepts de base 546 3. Un exemple de déploiement via Over-The-Air (OTA) 547 3.1 Enregistrement gratuit sur le portail d'apple 547 3.2 Le contrat ios Developer University Program 548 3.3 Création d'un certificat 555 3.4 Le déploiement Over-The-Air étape par étape 558 3.4.1 Application déployée 558 3.4.2 Accès au portail Apple Dev Center 558 3.4.3 Certificat de développeur 560 3.4.4 Déclaration des périphériques autorisés 561 3.4.5 Identification de l'application développée 563 3.4.6 Création du Provisioning Profile 565 3.4.7 Préparation du déploiement sous Xcode 568 3.4.8 Build et déploiement sous Xcode 569 3.4.9 Finalisation du déploiement 573 Index 575 21/21