2. HELLO XCODE 4
Jean-Alexandre Iragne
Benjamin Bouachour
Édouard Richard
Mathieu Godart
Nicolas Lauquin
14 Avril 2011 @ CocoaHeads Paris
3. NETCOSPORTS
• 1er réseau de fans de sports
• 16 développeurs en France
• Présent sur 5 plateformes 350 apps
• Nous sommes les pionniers de la conception et la réalisation
d’applications mobiles dans le domaine du Sport en Europe.
• Nous avons gagné un prix lors de la première session des Mobile
Awards organisée en France pour l’application « RTL
FOOTBALL »
17. Navigateur
• Différentes vues
• Résultat de la compilation
• Stack du débogueur
• Les breackpoints du projets
• Les log
• Pour chaque vue une bar de filtres
20. Editeur
• Différents Mode :
• Mode Editeur : un fichier ouvert
• Mode Assitant : plusieurs fichiers ouverts sur le
même onglets
• Mode versioning : deux fichiers ouverts pour
comparaison
34. BARRE D’INSPECTION -
FILE INSPECTOR
• Identité et Type
• Interface Builder Document
• Internationalisation
• Sélection de Target
• Informations SVN (révision, statuts et
chemin)
35. BARRE D’INSPECTION -
QUICK HELP
• Nom de la Classe
• Version d’OS supportée
• Résumé de la Classe
• Endroit de la déclaration
• Références
• Codes d’exemples
36. BARRE D’INSPECTION -
IDENTITY INSPECTOR
• Sélection de Classe personnalisée
• Identité (Label, ObjectID, Notes)
• Accessibilité
51. ÉDITION DE CODE -
AVERTISSEMENTS DE SYNTHAXE
Raccourci : cmd + ctrl + f
52. ÉDITION DE CODE -
ANALYSE
• Utilisation de Clang
• Plus de contenu à l’auto-complétion
• Amélioration de l’analyseur syntaxique
• Auto-Analyse à la sauvegarde (vérification des
Avertissements et des Erreurs)
54. LE SCM : PRÉSENTATION
Rappel : nom générique pour un ensemble d'outils permettant la gestion des différentes versions d'un code source.
• Meilleure intégration et confort
• Comparateur efficace
• SVN est bien géré
• Support de git
• Au revoir cvs
55. LE SCM : GIT
Rappel : Git est un logiciel de gestion de version distribué. Il a été initialement conçu par Linus Torvalds pour les
kernel linux. Il a été developpé pour être rapide.
• Décentralisé ?
• une «working copy» est un repository local complet (historique, suivit des
révisions, indépendant du réseau ou d’un serveur central).
• une fois commité, le repository local est mis à jour
• un action de «push» soumet/partage les changements sur UN serveur distant
• Vocabulaire:
• clone (git) / checkout (SVN) : créé une working copy
• pull (git) / update (SVN) : récupère les modifications depuis un serveur
• push : envoie les modifications sur un serveur
• Git par défaut: xcode propose la création d’un repo git local pour un nouveau projet.
56. SCM : VERSION EDITOR
• Super comparateur graphique
• Historique à la «Time Machine»
• 3 modes
• comparaison
• blame
• log
57. SCM : LES COMMANDES 1/2
1) Depuis le menu « File » -> « Source Control »
58. SCM : LES COMMANDES 2/2
2) Depuis le menu contextuel
3) Depuis l’Organizer
Fonctionnalité pratique depuis la zone de navigation:
59. SCM : L’ORGANIZER
• Gérer les différents repository:
• Visualiser l’historique des révisions
• Visualiser et créer des branches
• Naviguer dans le «working repository»
• Actions : commit, pull, refresh
• Ajouter un repository, faire un checkout/
clone repository, ajouter une «working
copy».
• Bonus : lier un contact du carnet d’adresse
60. SCM : QUELQUES LIMITATIONS
• Avec git : impossibilité de faire un pull/push si il y a des changement
non commités.
• problème avec les settings utilisateurs ?
-> utiliser un outil externe STRUCTURE PROJET XCODE 4 :
-> ne pas les versionner & .gitignore : (ajouter xcuserdata/ ) PROJECTNAME.xcodeproj
! project.pbxproj
! project.xcworkspace/
• Bug rencontrés: ! ! ! contents.xcworkspacedata
! ! ! xcuserdata/
! ! ! ! ! USERNAME.xcuserdatad/
! ! ! ! ! ! UserInterfaceState.xcuserstate
• dans la fenêtre de commit bloquage sur fichier utilisateur -> ! ! ! ! ! ! WorkspaceSettings.xcsettings
impossible de commiter (UserInterfaceState.xcuserstate) ! xcuserdata/
! ! ! USERNAME.xcuserdatad/
! ! ! ! xcdebugger/
• quelques problèmes gestion des repositories (changement de ! ! ! ! ! Breakpoints.xcbkptlist
mot de passe, problème de connexion) -> solution !
!
!
!
!
!
!
!
xcschemes/
! PROJECTNAME.xcscheme
suppression/ajout ! ! ! ! ! xcschememanagement.plist
• git cloning en erreur parfois (fonctionne en ligne de commande) STRUCTURE PROJET XCODE 3 :
PROJECTNAME.xcodeproj/
! project.pbxproj
! project.xcworkspace
=> défaut de jeunesse corrigé dans Xcode 4.1 ? !
!
USERNAME.pbxuser
USERNAME.perspective
! USERNAME.perspectivev3
! USERNAME.mode1v3
! USERNAME.mode2v3
61. SNAPSHOT
Rappel : permet de sauvegarder l’état courant d’un projet ou d’un workspace sur le disque pour restauration
éventuelle.
• onglet dédié dans l’organizer
• indépendant : un projet effacé est
restaurable
• usage manuel : File -> create snapshot
• automatiquement en cas
d’édition massive de fichiers
( refactor, renommage du projet, scm
update ) - Réglage «File -> Project settings».
62. ARCHIVE
Rappel : utilisé pour packager et distribuer l’application sous l’iOS ou MacApp Store.
• Archives réalisée sous Xcode3 non rappatriées
• Répertoire et format changé :
• ~/Library/Application Support/Developer/Shared/Archived
Applications/XXX.apparchive
• ~/Library/Developer/Xcode/Archives/YYYY-DD-MM/XXX.xcarchive
• Conversion manuelle possible à la nouvelle
structure, script trouvé sur stackoverflow (http://
stackoverflow.com/questions/5060228/can-we-import-apparchive-bundles-in-xcode-4)
65. INTRODUCTION DES
SCHEMES
• Définition: Régime ou modèle
• Etude du workflow de compilation
• Permet de regrouper
• Target
• Executable
• Methode d’exécution
• Règle de compilation
67. FENÊTRE D’ÉDITION ET DE
GESTION DES SCHEMES
• Edition d’un scheme
• Configuration
• Script
• Gestion du debug par instrument
• Gestion de l’archive
• Utilisation
69. GESTION DE LA
COMPILATION
• Où retrouver ses petits
• Gestion des configurations
• Gestion des langues
• Déploiement
• Vision du build setting par level
71. TARGET
• Où retrouver ses petits
• Ajout de framework
• Dépendance de lib
• Gestion de script
• Liste des sources et ressources
• info.plist
• Interface graphique
• Editeur
73. AGRÉGAT SCHEME ET BUILD
CONFIGURATION
• Création d’un scheme
• Spécification d’un instrument pour le profil
• Création d’un adhoc signé
• Création d’une archive iTunes
86. DBG – LA CONSOLE
• Les bénéfices de LLDB :
• Plus rapide, moins gourmand
• Meilleure intégration avec Xcode (merci Clang !)
• Syntaxe plus simple : nom + verbe [+ options]
• Intégration de Python
87. DBG – LA CONSOLE
• Quelques commandes utiles :
help
apropos
variable list
expr <objc-code>
script