Slide 1

Slide 1 text

© 2016 Yannick Heinrich. All Rights Reserved. #SWIFT Technology Introduction à Swift Yannick Heinrich iOS Developer

Slide 2

Slide 2 text

Architecture Historique Swift Application sur iOS Plan

Slide 3

Slide 3 text

Architecture

Slide 4

Slide 4 text

Architecture BSD/Darwin Core Foundation Foundation libdispatch Swift

Slide 5

Slide 5 text

Historique

Slide 6

Slide 6 text

•1970 (Avant C++) • Objective-C —> C •POO, réflexif et typage « faible » • Dynamique (Moteur d’exécution) • Gestion de la mémoire manuelle (conventions) ou automatique (pas de GC) • Fermetures depuis Objective-C 2.0 • Classe racine (NSObject) • Protocoles (presque une interface) Objective-C

Slide 7

Slide 7 text

Core Foundation -> C •Statique, C, POO like •Abstraction au dessus de BSD pour Threads, Network, File descriptors, Syscall, etc… Foundation -> Objective-C •Abstraction au dessus de Core Foundation GCD -> C •Abstraction pour la concurrence •API plus haut niveau dans Foundation (NSOperation) Historique

Slide 8

Slide 8 text

Objective-C •Gestion de la mémoire (améliorée depuis Objective-C2.0) •Pas de surcharge d’opérateurs, méthodes (pas de mangling) •Pas de généricitée •Typage faible •Conventions vs Obligations •Verbeux (reste du C) Désavantages

Slide 9

Slide 9 text

Swift

Slide 10

Slide 10 text

•Développé par Apple •Hautement typé •Généricité, pattern matching, try/catch, guard, defer, optionnels, … •Mangling •Compatible avec Objective-C et C •Protocol Oriented Language •Constraints > C++ templates Swift

Slide 11

Slide 11 text

•Open Source depuis Noël 2015 :) •Fonctionne sur Linux et Darwin •API changeante depuis 2.2 —> Stabilisation avec 3.0 •Utilisable ailleurs que sur  —> Toolchain dédiée —> https://swift.org/ Swift

Slide 12

Slide 12 text

Playground Swift

Slide 13

Slide 13 text

Application sur iOS

Slide 14

Slide 14 text

•Singleton (pas crier) •Delegation •Class Cluster •Reactor •Poids Mouche •MVC Patterns

Slide 15

Slide 15 text

Application OS Screen Button Current Active App Inactive App Inactive App HAL IPC

Slide 16

Slide 16 text

UIApplication UIApplication Delegate UIApplicationMain() main() Run Loop Background

Slide 17

Slide 17 text

Une zone d’écran/Une portion d’écran === ViewController + View Contrôleurs et Vues

Slide 18

Slide 18 text

•Code •Graphiquement avec Interface Builder Création des vues

Slide 19

Slide 19 text

Création des vues

Slide 20

Slide 20 text

Création des vues

Slide 21

Slide 21 text

More Information Swift.org https://swift.org/ The Swift Programming Language (Swift 2.2) https://developer.apple.com/library/ios/documentation/ Swift/Conceptual/Swift_Programming_Language/ Start Developing iOS Apps (Swift) https://developer.apple.com/library/ios/referencelibrary/ GettingStarted/DevelopiOSAppsSwift/index.html