Introducción a Swift

@josejaguirre

¿Para que aprender Swift? 

Desarrollo de aplicaciones móviles en iPhone & iPad

iOS & OSX

Todos los productos de Apple

iOS = Sistema operativo del iPhone

OSX = Sistema operativo del Mac

Objetive-C

Objetive-C

Smalltalk

C

Filosofía POO

Sintaxis

" Dotar de POO al lenguaje C "

C

C++

Objective-C

Lenguajes que derivan de C

Flexibilidad

No funciona la aplicación

Características de Objetive-C

  • Basado en C.
  • Lenguaje dinamico.
  • Lenguaje híbrido.
  • Toda la comprobación se realiza en tiempo de ejecución.
  • Las clases vienen en 2 archivos .h y .m.
  • Puedes enviar mensajes a nil (valor nulo).
  • No existen las excepciones.
  • El punto de entrada es la función main.

Características heredadas de C

  • Sentencias de control de flujo.
  • Tipos de datos primitivos, estructuras y punteros.
  • Conversiones implícitas y explícitas entre tipos.
  • Ámbitos de las variables: Globales, estáticas y locales.
  • Las funciones y su sintaxis.
  • Las directivas del preprocesador (Objc añade otras mas).

Dinamismo en Objetive-C

  • Memoria dinamica.
  • Tipos dinámicos.
  • Introspección.
  • Enlace Dinamico
  • Carga dinamica.

Historia de Objetive-C

StepStone

NexTStep

Apple

1980

1988

1996

Apple adquiere

Mac OS X

Objective-C

Cocoa

Cocoa - API

Foundation Framework

Application Kit (AppKit)

Framework

NSObject

Núcleo

Clases UI, Audio, Video, Red

Runtime de Obj-C

Runtime

Lenguaje C

Objetive-C

+
+

Cocoa 

Objective-C (AppKit, Foundation, Image Kit, QuickTime Kit)

Application Services

Core Services

Kernel

Capas de Software Mac OS X

Cocoa Touch 

GCC

LLVM

Compiladores

Chris Lattner 

LLVM

Maquina virtual de bajo nivel

Gestión de memoria

Manual Reference Counting

Automatic Reference Counting

Nosotros gestionamos la memoria de los objetos en objc

El compilador añade automáticamente código para la gestión de memoria

ARC no es recolector de basura

Automatic Reference Counting

Manual Reference Counting

Manual Reference Counting

Automatic Reference Counting

Xcode

Herramienta de desarrollo

Editor 

Interfaz Builder

Testeo & rendimiento

Simulador de iOS 

Swift

Nuevo lenguaje de programación

iOS & OSX

Swift 1.2

"Objective-C sin la C"

-Apple

¿Por que diseñar un nuevo lenguaje?

Pilares de Swift

Seguro

Moderno

Potente

Características de Swift

  • Filosofia contraria a Objective-C.
  • Tipado estricto.
  • Sintaxis más simple.
  • Lenguaje multiparadigma.
  • Todo es un objeto.
  • Multiples valores de retorno.
  • Sobrecarga de operadores (Estilo C++).
  • Closures.
  • Opcionales (Tratar la ausencia de un valor).
  • Interpolación de tipo.
  • Lenguaje multi-paradigma.

Ventajas de Swift contra Objc

  • Sintaxis mas concreta.
  • Se eliminan los archivos .h 
  • Mecanismo de espacios de nombres.
  • Swift puede usarse en un proyecto que este creado en Objective-C (viceversa).

Apple esta apostando todo por Swift

Swift & Objetive-C

  • Herramienta de desarrollo - Xcode.
  • Compilador - LLVM.
  • Mismos Frameworks - Cocoa & Cocoa Touch.
  • Administración de memoria - ARC.

Requisitos

  • Contar con una Mac/iMac/Macbook etc.
  • Tener la versión más reciente del sistema operativo. Yosemite
  • Tener una cuenta de desarrollador de Apple - Apple ID
  • Tener instalado el entorno de desarrollo - Xcode 6

Playground

  • Aprender y realizar pruebas de código
  • Permite la experiencia del lenguaje en forma de script
  • Permite visualizar resultados de inmediato
  • Realizar depuración

RELP (Read-Eval-Print-Loop)

  • Versión interactiva en linea de comandos.
  • Viene incluido en Xcode.

Xcode 6

Playground

Introducción a Swift

By José Aguirre

Introducción a Swift

Curso al curso de programación en Swift

  • 236