SlideShare a Scribd company logo
1 of 35
Download to read offline
Introducció al desenvolupament
  t oducc ó a dese o upa e t
         d’aplicacions per a iOS
                   Enric Farguell Matesanz – DI
                         efarguell@salle.url.edu
Continguts
   Què ensenyarem en aquest curs?
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
Introducció - iPhone
   Presentació de l’iPhone el Gener de 2007 (a la venda en
    Juny)
   Va revolucionar la telefonia mòbil
       Interfície multitàctil
       Sistema Operatiu
       Estètica
       AppStore
       Accessoris
Introduccíó - iPod Touch
   Presentat el Setembre de 2007
   Similar a l’iPhone
       Mateix hardware base (sense telèfon ni GPS)
       Mateix sistema operatiu
       Més barat i accessible
Introducció - iPhone + iPod
   Actualment més de 120 milions de dispositius venuts
   AppStore + iTunes: vendes centralitzades
   Més de 240.000 aplicacions disponibles
                      p           p
   Més de 4000 milions de descàrregues
   Inesperada plataforma de jocs
Introducció - iPad
   A la venda el 3 d’abril de 2010 en USA
   Basat en iOS
   Accessoris d’Apple (Teclat, SD-Card, USB, adaptador
                   pp (                           p
    VGA...)
   Abans de la distribució ja va suposar una revolució
                             j      p
    (tabletes Android)
   Més d’un milió d’unitats venudes en 28 dies
   Més de 20.000 Apps natives
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
Distribució d’aplicacions
            d aplicacions
   Distribució de software iOS
       Tipus de llicència i de distribució (Ad-Hoc, AppStore)
       Desenvolupament en:
           Objective-C
           Flash
   Provisionat d dispositius
    P ii        de di   ii
       Identificador únic: UDID
       Claus i certificats
        Cl          ifi
Distribució - iPhone 3 x
                     3.x
   Característiques destacades:
       Mac OS X empotrat
       Llibreries estándard
       Programable en C C++ Objective C
                         C, C++, Objective-C...
       Optimitzat per al dispositiu
   Novetats de la versió:
       Compra de continguts
       Connectivitat simplificada
                         p
       Notificacions PUSH
       Mapes y geolocalització
       Control d’accesoris
       Més de 1000 APIs noves
Distribució - iPhone 3 x
                     3.x
   Limitacions imposades:
       Accés només a alt nivell
       Intèrprets programables (Java, Flash, C64...)
       Multitasca no permesa
           Rendiment
           Seguretat
            S
   Limitacions distribució AppStore, a afegir
       Usabilitat disseny
        U bili i di
   La distribució Ad-Hoc no limita
Distribució - iPhone 4 x
                     4.x
   Novetats:
       iPhone OS canvia a iOS
       Multitasca
       iAd
       Game Center
       Millor interfície d’usuari
                          d usuari
       Mail millorat
   Empresa:
      p
       Millor seguretat
       Apps via WiFi i 3G
       Gestió de dispositius
       Més de 1.500 APIs noves
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
Eines de desenvolupament
   Dashcode
       Disseny web natiu, no accedeix a perifèrics
   XCode 3 - 4
       Codi Obj-C, C, C++
   Interface Builder (integrat XCode 4)
                      (    g           )
       Disseny assistit: WYSIWYG
   Instruments
       Eina de depuració i detecció de fallades de memòria
Descripció de l’Objective C
              l Objective-C
   Mètode:
       Pot ser:
           Dirigit a una classe (mètode de classe): no cal tenir un objecte
            instanciat en memòria
           Dirigit a una instància (mètode d’instància): em dirigeixo a un objecte
            en memòria
   Els mètodes es criden com a missatges
   El format és:
       [receptor missatge];
   Amb paràmetres:
       [receptor missatge: (tipus1) par1 missatgePar2: (tipus2) par2];
Classes: interfície i implementació
   Per a crear una classe necessito una interfície i una implementació:
       Interfície: estudiant h
                    estudiant.h
       Implementació: estudiant.m
   Per a definir les funcions he de fer:
       Funcions d classe:
        F        de l
           +(tipusDeRetorn)nomFuncio;
       Funcions d’instància:
           -(tipusDeRetorn)nomFuncio;
   La sintaxi de la interfície és:
       @
        @interface NomClasse: PareDelQueHereto {
           // Declaració de variables membre
       }
       // Declaració de mètodes
       @end
   Si no em cal heretar de cap altre classe, he d’heretar de NSObject
Classes: interfície i implementació
   La implementació és l’arxiu .m
   La i
    L sintaxi é
            i és:
       @implementation NomClasse
       // Implementació dels mètodes
       @end
   La implementació dels mètodes segueix la sintaxi:
         p                          g
       Per a funcions de classe:
           +(tipusDeRetorn) nomFuncio: (tipus1){
               //Implementació de la funció
           }
       Per a funcions d’instància:
           -(tipusDeRetorn) nomFuncio: (tipus1){
               //Implementació de la funció
           }
Exemple 1
   Crea un projecte tipus View-based
   Sobre l’arxiu NomProjecteAppDelegate.c, busca la funció:
        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions




   Dins d’aquesta funció, posa-hi:
       NSLog(@”Hello from didFi i h”)
        NSL (@”H ll f      didFinish”);
   Sobre l’arxiu NomProjecteViewController.c, busca la funció:
                                                    -(void)viewDidLoad


   Dins d’aquesta funció, posa-hi:
       NSLog(@”Hello from viewDidLoad”);
   Compila, executa i mira què surt per la consola
Exemple 2
   Sobre el projecte anterior
   Sobre l’arxiu NomProjecteAppDelegate.h, posa-hi la capçalera:
       -(void) saySomething:(NSString*) aString;
   Sobre l arxiu NomProjecteAppDelegate c implementa la funció:
          l’arxiu NomProjecteAppDelegate.c,
       -(void) saySomething:(NSString*) aString{
           NSLog(aString);
                g(      g)
       }
   Busca la funció:
        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions




   Fes la crida:
       [self saySomething:@”Hello world.”];
Exemple 3
   Sobre el projecte anterior
   Sobre l’arxiu NomProjecteViewController.h, posa-hi la capçalera:
       -(void) saySomething:(NSString*) aString;
   Sobre l arxiu NomProjecteViewController h implementa la funció:
          l’arxiu NomProjecteViewController.h,
       -(void) saySomething:(NSString*) aString{
           NSLog(aString);
                g(      g)
       }
   A l’arxiu NomProjecteAppDelegate.c, busca la funció:
        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions




   Fes la crida:
       [viewController saySomething:@”Hello from viewController.”];
Iniciat d’objectes
        d objectes
   Tots els objectes es declaren com a punters en Obj-C
       meuOjbecte *
           Ojb     *mevaVariable;
                        V i bl
   Per tant, sempre cal demanar memòria per a un objecte quan
    el volem fer servir:
       mevaVariable=[meuObjecte alloc];
       alloc és funció de classe, no d’instància: +(id) alloc;
       alloc només demana memòria i inicia a zero.
   S’ha d’iniciar els objectes amb una funció que sempre comença
    amb init:
       El mètode init està implementat a NSObject per defecte.
       Es pot sobreescriure, però és recomanable crear un inicialitzador
           p                  p
        que comenci amb la paraula init.
       El retorn de qualsevol funció init és sempre id, per si alguna classe
        que hi hereti necessita treballar amb un tipus de dades diferent
                                                                   diferent.
Gestió de memòria
   La memòria pels objectes es demana amb alloc
   alloc ve implementat per defecte des de NSObject
   Per a poder alliberar memòria, cal crear dealloc
       Aquesta rutina no està implementada per defecte a les classes
        pròpies.
       A diferència d’alloc és mètode d’instància:
                     d alloc,          d instància:
           -(void) dealloc
           {
               //Alliberem tots els objectes per als que haguem demanat memòria.
               //Alliberem el mètode pare.
               [super dealloc];
           }
       Cal crear un dealloc, encara que només sigui per a alliberar el pare!
Declaració de propietats
   L’accés a les variables pròpies d’una classe es fa a partir de les
    propietats
   Les propietats es van incloure recentment per a aconseguir
    operacions que antigament requerien molt de codi; realment el
           i            ti     t        i      lt d     di     l    t l
    que fan és implementar un setter i un getter
       El setter dóna un valor a la variable
       El getter llegeix el valor de la variable
   En general, les variables pròpies d’una classe d’Obj-C, reben el
                                      d una        d Obj C,
    nom de propietats, i per a cada objecte declarat dins la classe
    caldrà definir-les
   La sintaxi és:
       @property (atribut1, atribut2, ...) tipus nomVariable;
Declaració de propietats
   Les propietats es divideixen en:
       De modificació de setter i getter: per defecte, el getter és el nom de la propietat i el setter és
                                   g       p          , g                         p p
        setNomPropietat. La sintaxi és:
           setter=nomSetter
           getter=nomGetter
       D assignació
        D’assignació (mutuament excloents):
           readwrite: de lectura i escriptura, és el valor per defecte
           readonly: només de lectura
       Del setter (mutuament excloents):
           assign: copia directament la informació d’una variable a la altra
           copy: copia la informació i allibera el valor anterior de la variable
           retain: copia la informació i allibera el valor anterior de la variable, la variable actual ha de fer un
            retain
       D’atomicitat
           atomic: la execució del setter i el getter no es pot interrompre per cap altre fil en l’entorn multifil
            d’un S.O. És el valor per defecte
           non-atomic: la execució es pot interrompre, però també és molt més ràpid
                                        p              p p                           p
   Algunes propietats només funcionen amb objectes i no amb POD (Plain, Old Data)
Exemple 4
   Sobre el projecte anterior
   A la interfície de NomProjecteViewController:
       Declara NSString *texteAPintar;
       Defineix les seves propietats:
           @property(nonatomic, retain)NSString *texteAPintar;
   A la implementació fes:
       @synthesize texteAPintar;
   Sobre la funció saySomething, afegim una mica de codi:
       -(void) saySomething:(NSString*) aString{
           NSLog(aString);
                g(      g);
           NSLog(texteAPintar);
       }
   A l’arxiu NomProjecteAppDelegate.c, busca la funció:

        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


   Implementa aquestes línies de codi:
       viewController.texteAPintar=@ I
        viewController texteAPintar=@”I use a NSString property”;
                                                        property. ;
       [viewController saySomething:@”Hello from viewController.”];
   Prova: [viewController saySomething:[NSString stringWithString:@”Hello from viewController.”]];
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
UIView
   Desenvolupar per a iOS implica treballar amb vistes.
       La vista és el que es mostra per pantalla.
       Es poden tenir vistes múltiples sobre la pantalla, a forma de
        stack.
        stack
       La vista que es veu és la primera, la resta es superposen.
   Totes les classes que hereten de UIView poden rebre
     otes es c asses       e ete e U V ew po e eb e
    crides a funcions de UIView.
       Les classes de UIView pertanyen al UIKit Framework.
       COCOA inclou per defecte UIKit.
       UILabel i UIButton hereten de UIView, i inclouen d’altres
        variables interenes d’altres tipus.
                            d altres tipus
   Si ho busqueu al help d’Apple, assegureu-vos de buscar-ho
    a la SDK de iOS, i no a la de Mac OS!
UIView
   Interface Builder (IB) és una eina WYSIWYG.
   Permet disposar qualsevol classe que hereta de UIVie a la
             dis sar alse l             e          UIView
    pantalla de la App.
   Tot el que es pot fer amb IB es pot fer p g
           q       p                 p      programàticament.
       NO es recomana treballar amb els controladors alhora amb IB i
        programàticament, ja que el codi generat per IB no és accessible.
       Per a obrir la aplicació IB cal prèmer sobre l’arxiu
                        p               p
        NomAppViewController.xib; aquesta és la vista editable per IB.
       NO treballeu amb el MainWindow.xib; no funciona!
       Salveu l’arxiu XIB en acabar la edició...
               l arxiu
   Per a referenciar un objecte pintat a l’IB des del codi s’usa la
    macro IBOutlet.
   Per
    P a referenciar una f ió relacionada a un element a través
             f     i       funció l i d             l              é
    d’IB s’usa la macro IBAction.
UILabel i UIButton
   UILabel és una classe que permet mostrar camps de text
    com a etiquetes:
       Es pot canviar el seu contingut com a camp de text: té una
        propietat i
             i     interna que é text, d l tipus NSS i
                               és      del i     NSString.
       El text, imatges associades i posició es poden editar tant a
        través d’IB com programàticament
               d IB       programàticament.
   UIButton és una classe que permet generar botons a
    l aplicació:
    l’aplicació:
       Es pot relacionar a una funció, que es cridarà en prémer el
        botó.
       De nou, tant el text com les imatges com la posició es poden
        editar a través de IB i programàticament.
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
NSTimer
   NSTimer és una classe que permet crear un cronògraf
    intern on es va cridant una funció cada vegada que passa
    un determinat període de temps.
   Es crea i instancia amb una funció de classe:
       scheduledTimerWithTimeInterval:...
       Aquesta funció incorpora un autorelease. Per tant, no es pot
        fer release del timer (proveu a fer-ho...).
       Per
        P a aturar-lo i alliberar-lo cal cridar una funció específica, que
                       l   llib   l    l id         f ió        ífi
        és invalidate.
   Un objecte de NSTimer es pot crear d’altres formes però
                                       d altres formes,
    aquesta és la automàtica.
Exemple 5
   Crea un nou projecte tipus View-based.
   Sobre l’arxiu AppViewController.h, afegeix:
                   pp                     g
       NSTimer *myTimer;
       int tCount;
   Sobre l’arxiu AppViewController.c, busca viewDidLoad.
   Dintre de la funció, implementa:
    Di     d l f ió i l
       myTimer=[NSTimer scheduled TimerWithTimeInterval: 1.0 target:self selector:@selector(timerSpeaks)
        userInfo:nil repeats:YES];
       tCount=0;
   En una funció separada, implementa:
       -(void)timerSpeaks{
           tCount++;
           if(tCount 60){
            if(tCount==60){
               NSLog(@”Timer out”);
               [myTimer invalidate];
           }
           else NSLog([NSString stringWithFormat:@”Happened %d seconds”, tCount]);
       }
   Com a exemple 6, proveu a fer la crida des d’AppDelegate en lloc de AppViewController...
Continguts
   Índex
       Introducció al desenvolupament d’aplicacions per a iPhone –
        Historia, estat de l’art i conceptes.
       Fonaments d l d
        F           de la distribució d’aplicacions.
                                 b ó d’ l
       Eines de desenvolupament: Xcode i Interface Builder (IB).
       Classes UIL b l i UIB
        Cl      UILabel UIButton a través de IB.
                                            é d IB
       Classe NSTimer: control de temps a la aplicació.
       Hands
        H d on coding: creació d’un petit joc amb tots els elements
                     di         ió d’     tit j      bt t l l     t
        anteriors.
Hands on coding
   Feu un joc amb tot el que heu après fins ara, que
    respongui a aquestes especificacions:
       El joc és un compte enrere de 10 segons on l’usuari ha de
        tocar tantes vegades com pugui un botó fins que s’esgota el
                            d            i    b ó fi     ’        l
        temps.
       El joc s inicia polsant un botó diferent.
               s’inicia                 diferent
       La vista ha de contenir aquests objectes:
           2 UILabels, 2 UIButton
       Els UILabels han d’informar de 2 coses:
           Temps restant.
                p
           Vegades que s’ha premut el botó de puntuació.
Moltes gràcies per la seva atenció!




  Introducció al desenvolupament
    t oducc ó a dese o upa e t
           d’aplicacions per a iOS
                Enric Farguell Matesanz – efarguell@salle.url.edu
            Dep. d’informàtica, Enginyeria i Arquitectura La Salle

More Related Content

Viewers also liked

Proyecto De Marketing
Proyecto De MarketingProyecto De Marketing
Proyecto De Marketingguestb4a798
 
Los Gorditos En Mexico
Los Gorditos En MexicoLos Gorditos En Mexico
Los Gorditos En Mexicopeluchin87
 
Los niños TAMBIÉN deben INVERTIR
Los niños TAMBIÉN deben INVERTIRLos niños TAMBIÉN deben INVERTIR
Los niños TAMBIÉN deben INVERTIRExequiel
 
Fin De AñO 1
Fin De AñO 1Fin De AñO 1
Fin De AñO 1kaya45
 
Resumen Del Tema 10
Resumen Del Tema 10Resumen Del Tema 10
Resumen Del Tema 10pesislove
 
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Frontera
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La FronteraC:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Frontera
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Fronterarafacwm
 
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01Orientadora Educativa
 
Proyecto innovaciónm2
Proyecto innovaciónm2Proyecto innovaciónm2
Proyecto innovaciónm2Eloy Molera
 
Presentacio automats
Presentacio automatsPresentacio automats
Presentacio automatsjzambra3
 
Taller Slideshare Web 2 0
Taller Slideshare Web 2 0Taller Slideshare Web 2 0
Taller Slideshare Web 2 0mcorredor2010
 
Iniciativas De Ciudadanos Legisladores
Iniciativas De Ciudadanos LegisladoresIniciativas De Ciudadanos Legisladores
Iniciativas De Ciudadanos LegisladoresRafaelMorenoValle
 
Com adaptar el teu model de negoci
Com adaptar el teu model de negociCom adaptar el teu model de negoci
Com adaptar el teu model de negociDigital Granollers
 
Eval1 Rosa Eva GutiéRrez Aguirre
Eval1 Rosa Eva GutiéRrez AguirreEval1 Rosa Eva GutiéRrez Aguirre
Eval1 Rosa Eva GutiéRrez Aguirrekelablanco
 

Viewers also liked (20)

Reciclaje
ReciclajeReciclaje
Reciclaje
 
Proyecto De Marketing
Proyecto De MarketingProyecto De Marketing
Proyecto De Marketing
 
Los Gorditos En Mexico
Los Gorditos En MexicoLos Gorditos En Mexico
Los Gorditos En Mexico
 
Los niños TAMBIÉN deben INVERTIR
Los niños TAMBIÉN deben INVERTIRLos niños TAMBIÉN deben INVERTIR
Los niños TAMBIÉN deben INVERTIR
 
Fin De AñO 1
Fin De AñO 1Fin De AñO 1
Fin De AñO 1
 
Resumen Del Tema 10
Resumen Del Tema 10Resumen Del Tema 10
Resumen Del Tema 10
 
Educar en Tecnología
Educar en TecnologíaEducar en Tecnología
Educar en Tecnología
 
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Frontera
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La FronteraC:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Frontera
C:\Documents And Settings\Usuario\Mis Documentos\Viaje A Jerez De La Frontera
 
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01
Tallerparapadresprevencinderiesgoseninternet 101024171526-phpapp01
 
POWERPOINT
POWERPOINT POWERPOINT
POWERPOINT
 
Proyecto innovaciónm2
Proyecto innovaciónm2Proyecto innovaciónm2
Proyecto innovaciónm2
 
Producto Integrador Nti
Producto Integrador NtiProducto Integrador Nti
Producto Integrador Nti
 
Presentacio automats
Presentacio automatsPresentacio automats
Presentacio automats
 
Medios Digitales
Medios DigitalesMedios Digitales
Medios Digitales
 
Open data Granollers
Open data Granollers Open data Granollers
Open data Granollers
 
Taller Slideshare Web 2 0
Taller Slideshare Web 2 0Taller Slideshare Web 2 0
Taller Slideshare Web 2 0
 
TRIGONOMETRIA GRAFICAS DE FUNCIONES TRIGONOMETRICAS
TRIGONOMETRIA GRAFICAS DE FUNCIONES TRIGONOMETRICASTRIGONOMETRIA GRAFICAS DE FUNCIONES TRIGONOMETRICAS
TRIGONOMETRIA GRAFICAS DE FUNCIONES TRIGONOMETRICAS
 
Iniciativas De Ciudadanos Legisladores
Iniciativas De Ciudadanos LegisladoresIniciativas De Ciudadanos Legisladores
Iniciativas De Ciudadanos Legisladores
 
Com adaptar el teu model de negoci
Com adaptar el teu model de negociCom adaptar el teu model de negoci
Com adaptar el teu model de negoci
 
Eval1 Rosa Eva GutiéRrez Aguirre
Eval1 Rosa Eva GutiéRrez AguirreEval1 Rosa Eva GutiéRrez Aguirre
Eval1 Rosa Eva GutiéRrez Aguirre
 

Similar to Introducció al desenvolupament d’aplicacions per a i os ctug

Novetats Visual Studio 2010
Novetats Visual Studio 2010Novetats Visual Studio 2010
Novetats Visual Studio 2010Lluis Franco
 
Continguts I Sistema Operatiu
Continguts I Sistema OperatiuContinguts I Sistema Operatiu
Continguts I Sistema Operatiuariobot
 
Creacio activitats
Creacio activitatsCreacio activitats
Creacio activitatscolobor
 
Projecte_final_Competic2
Projecte_final_Competic2Projecte_final_Competic2
Projecte_final_Competic2abel lopez
 
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenes
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenesInterfaz gráfica de usuario para la búsqueda de imágenes basada en imágenes
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenesUniversitat Politècnica de Catalunya
 
Algunes "prèvies" i quelcom més sobre la "Linkat 2"
Algunes "prèvies" i quelcom més sobre la "Linkat 2"Algunes "prèvies" i quelcom més sobre la "Linkat 2"
Algunes "prèvies" i quelcom més sobre la "Linkat 2"guest0ea05
 
La història de la informàtica
La història de la informàticaLa història de la informàtica
La història de la informàticatortugueta97
 
Introducció a la plataforma Android (Updated)
Introducció a la plataforma Android (Updated)Introducció a la plataforma Android (Updated)
Introducció a la plataforma Android (Updated)TarracoDroid
 
Pr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaPr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaCarolina Latino
 
Introducció a Android
Introducció a AndroidIntroducció a Android
Introducció a AndroidTarracoDroid
 
Tema 6 dispositius tecnològics a l'aula de primària
Tema 6 dispositius tecnològics a l'aula de primàriaTema 6 dispositius tecnològics a l'aula de primària
Tema 6 dispositius tecnològics a l'aula de primàriaTIC6
 
Introducció a la programació en Android
Introducció a la programació en AndroidIntroducció a la programació en Android
Introducció a la programació en AndroidAtictes
 
Bordas marti programari
Bordas marti programariBordas marti programari
Bordas marti programarimartix14
 
1. introducció
1. introducció1. introducció
1. introducciósergigrau
 

Similar to Introducció al desenvolupament d’aplicacions per a i os ctug (20)

UD3 Programació
UD3 ProgramacióUD3 Programació
UD3 Programació
 
Creació d'una aplicació d'Android
Creació d'una aplicació d'AndroidCreació d'una aplicació d'Android
Creació d'una aplicació d'Android
 
Novetats Visual Studio 2010
Novetats Visual Studio 2010Novetats Visual Studio 2010
Novetats Visual Studio 2010
 
Continguts I Sistema Operatiu
Continguts I Sistema OperatiuContinguts I Sistema Operatiu
Continguts I Sistema Operatiu
 
Creacio activitats
Creacio activitatsCreacio activitats
Creacio activitats
 
Projecte final
Projecte finalProjecte final
Projecte final
 
Projecte_final_Competic2
Projecte_final_Competic2Projecte_final_Competic2
Projecte_final_Competic2
 
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenes
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenesInterfaz gráfica de usuario para la búsqueda de imágenes basada en imágenes
Interfaz gráfica de usuario para la búsqueda de imágenes basada en imágenes
 
Algunes "prèvies" i quelcom més sobre la "Linkat 2"
Algunes "prèvies" i quelcom més sobre la "Linkat 2"Algunes "prèvies" i quelcom més sobre la "Linkat 2"
Algunes "prèvies" i quelcom més sobre la "Linkat 2"
 
Programació Android 1
Programació Android 1Programació Android 1
Programació Android 1
 
La història de la informàtica
La història de la informàticaLa història de la informàtica
La història de la informàtica
 
Introducció a la plataforma Android (Updated)
Introducció a la plataforma Android (Updated)Introducció a la plataforma Android (Updated)
Introducció a la plataforma Android (Updated)
 
Linkat
LinkatLinkat
Linkat
 
Pr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaPr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolina
 
Introducció a Android
Introducció a AndroidIntroducció a Android
Introducció a Android
 
Tema 6 dispositius tecnològics a l'aula de primària
Tema 6 dispositius tecnològics a l'aula de primàriaTema 6 dispositius tecnològics a l'aula de primària
Tema 6 dispositius tecnològics a l'aula de primària
 
Practica 0 m3
Practica 0 m3Practica 0 m3
Practica 0 m3
 
Introducció a la programació en Android
Introducció a la programació en AndroidIntroducció a la programació en Android
Introducció a la programació en Android
 
Bordas marti programari
Bordas marti programariBordas marti programari
Bordas marti programari
 
1. introducció
1. introducció1. introducció
1. introducció
 

More from Digital Granollers

Desplegament de fibra òptica a Granollers
Desplegament de fibra òptica a GranollersDesplegament de fibra òptica a Granollers
Desplegament de fibra òptica a GranollersDigital Granollers
 
Presentació factura electronica. Intervenció Ajuntament Granollers.
Presentació factura electronica. Intervenció Ajuntament Granollers.Presentació factura electronica. Intervenció Ajuntament Granollers.
Presentació factura electronica. Intervenció Ajuntament Granollers.Digital Granollers
 
Presentació e fact granollers. Consorci AOC.
Presentació e fact granollers. Consorci AOC.Presentació e fact granollers. Consorci AOC.
Presentació e fact granollers. Consorci AOC.Digital Granollers
 
Com crear factures amb B2BRouter
Com crear factures amb B2BRouterCom crear factures amb B2BRouter
Com crear factures amb B2BRouterDigital Granollers
 
C8 Inicia't en les presentacions de diapositives
C8 Inicia't en les presentacions de diapositivesC8 Inicia't en les presentacions de diapositives
C8 Inicia't en les presentacions de diapositivesDigital Granollers
 
C6 Inicia't en els fulls de càlcul
C6 Inicia't en els fulls de càlculC6 Inicia't en els fulls de càlcul
C6 Inicia't en els fulls de càlculDigital Granollers
 
C1 Cultura, participació i civisme digital
C1 Cultura, participació i civisme digitalC1 Cultura, participació i civisme digital
C1 Cultura, participació i civisme digitalDigital Granollers
 
Sigues el teu propi informàtic 2a sessió
Sigues el teu propi informàtic 2a sessióSigues el teu propi informàtic 2a sessió
Sigues el teu propi informàtic 2a sessióDigital Granollers
 
Sigues el teu propi informàtic 1a sessió
Sigues el teu propi informàtic 1a sessióSigues el teu propi informàtic 1a sessió
Sigues el teu propi informàtic 1a sessióDigital Granollers
 
Millora en l'ús del correu electrònic
Millora en l'ús del correu electrònicMillora en l'ús del correu electrònic
Millora en l'ús del correu electrònicDigital Granollers
 
Millora amb el writer + movie maker
Millora amb el writer + movie makerMillora amb el writer + movie maker
Millora amb el writer + movie makerDigital Granollers
 
Crea presentacions de diapositives
Crea presentacions de diapositivesCrea presentacions de diapositives
Crea presentacions de diapositivesDigital Granollers
 
Crea la teva web a partir d'un blog
Crea la teva web a partir d'un blogCrea la teva web a partir d'un blog
Crea la teva web a partir d'un blogDigital Granollers
 
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiu
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiuC2 Tecnologia digital i ús de l’ordinador i del sistema operatiu
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiuDigital Granollers
 

More from Digital Granollers (20)

Desplegament de fibra òptica a Granollers
Desplegament de fibra òptica a GranollersDesplegament de fibra òptica a Granollers
Desplegament de fibra òptica a Granollers
 
Presentació factura electronica. Intervenció Ajuntament Granollers.
Presentació factura electronica. Intervenció Ajuntament Granollers.Presentació factura electronica. Intervenció Ajuntament Granollers.
Presentació factura electronica. Intervenció Ajuntament Granollers.
 
Presentació e fact granollers. Consorci AOC.
Presentació e fact granollers. Consorci AOC.Presentació e fact granollers. Consorci AOC.
Presentació e fact granollers. Consorci AOC.
 
Com crear factures amb B2BRouter
Com crear factures amb B2BRouterCom crear factures amb B2BRouter
Com crear factures amb B2BRouter
 
C8 Inicia't en les presentacions de diapositives
C8 Inicia't en les presentacions de diapositivesC8 Inicia't en les presentacions de diapositives
C8 Inicia't en les presentacions de diapositives
 
C6 Inicia't en els fulls de càlcul
C6 Inicia't en els fulls de càlculC6 Inicia't en els fulls de càlcul
C6 Inicia't en els fulls de càlcul
 
C4 Treballa documents de text
C4 Treballa documents de textC4 Treballa documents de text
C4 Treballa documents de text
 
C3 Navega
C3 Navega C3 Navega
C3 Navega
 
C2 Comença!
C2 Comença!C2 Comença!
C2 Comença!
 
C1 Cultura, participació i civisme digital
C1 Cultura, participació i civisme digitalC1 Cultura, participació i civisme digital
C1 Cultura, participació i civisme digital
 
Sigues el teu propi informàtic 2a sessió
Sigues el teu propi informàtic 2a sessióSigues el teu propi informàtic 2a sessió
Sigues el teu propi informàtic 2a sessió
 
Sigues el teu propi informàtic 1a sessió
Sigues el teu propi informàtic 1a sessióSigues el teu propi informàtic 1a sessió
Sigues el teu propi informàtic 1a sessió
 
Millora en l'ús del correu electrònic
Millora en l'ús del correu electrònicMillora en l'ús del correu electrònic
Millora en l'ús del correu electrònic
 
Millora amb el writer + movie maker
Millora amb el writer + movie makerMillora amb el writer + movie maker
Millora amb el writer + movie maker
 
Escolta per internet
Escolta per internetEscolta per internet
Escolta per internet
 
Crea presentacions de diapositives
Crea presentacions de diapositivesCrea presentacions de diapositives
Crea presentacions de diapositives
 
Crea la teva web a partir d'un blog
Crea la teva web a partir d'un blogCrea la teva web a partir d'un blog
Crea la teva web a partir d'un blog
 
Crea el teu propi fotollibre
Crea el teu propi fotollibreCrea el teu propi fotollibre
Crea el teu propi fotollibre
 
C3 Navega
C3 NavegaC3 Navega
C3 Navega
 
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiu
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiuC2 Tecnologia digital i ús de l’ordinador i del sistema operatiu
C2 Tecnologia digital i ús de l’ordinador i del sistema operatiu
 

Recently uploaded

presentació treball i energia 1 Batx.pptx
presentació treball i energia 1 Batx.pptxpresentació treball i energia 1 Batx.pptx
presentació treball i energia 1 Batx.pptxcarleslucmeta
 
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)nfulgenc
 
Català parelles 1r -Natalia i LunaHORIZONTAL.pdf
Català parelles 1r -Natalia i LunaHORIZONTAL.pdfCatalà parelles 1r -Natalia i LunaHORIZONTAL.pdf
Català parelles 1r -Natalia i LunaHORIZONTAL.pdfErnest Lluch
 
Presentació bloc 3 Perspectiva gènere.pptx
Presentació bloc 3 Perspectiva gènere.pptxPresentació bloc 3 Perspectiva gènere.pptx
Presentació bloc 3 Perspectiva gènere.pptxRosabel UA
 
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdf
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdfINFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdf
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdfErnest Lluch
 
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓ
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓII BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓ
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓLasilviatecno
 
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdf
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdfJFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdf
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdfErnest Lluch
 
JOCS FLORALSCatalà 6è - Isak Arenas.pdf
JOCS FLORALSCatalà 6è - Isak Arenas.pdfJOCS FLORALSCatalà 6è - Isak Arenas.pdf
JOCS FLORALSCatalà 6è - Isak Arenas.pdfErnest Lluch
 

Recently uploaded (9)

Díptic CFGM cfgm cfgm cfgm cfgm cfgm .pdf
Díptic CFGM cfgm cfgm cfgm cfgm cfgm .pdfDíptic CFGM cfgm cfgm cfgm cfgm cfgm .pdf
Díptic CFGM cfgm cfgm cfgm cfgm cfgm .pdf
 
presentació treball i energia 1 Batx.pptx
presentació treball i energia 1 Batx.pptxpresentació treball i energia 1 Batx.pptx
presentació treball i energia 1 Batx.pptx
 
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)
LES COMARQUES DE CATALUNYA( Plana, costa, muntanya)
 
Català parelles 1r -Natalia i LunaHORIZONTAL.pdf
Català parelles 1r -Natalia i LunaHORIZONTAL.pdfCatalà parelles 1r -Natalia i LunaHORIZONTAL.pdf
Català parelles 1r -Natalia i LunaHORIZONTAL.pdf
 
Presentació bloc 3 Perspectiva gènere.pptx
Presentació bloc 3 Perspectiva gènere.pptxPresentació bloc 3 Perspectiva gènere.pptx
Presentació bloc 3 Perspectiva gènere.pptx
 
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdf
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdfINFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdf
INFORME_BAREM_PROVISIONAL_BAREMELLUCH.pdf
 
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓ
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓII BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓ
II BLOC ACTIVITATS APP INVENTOR PROGRAMACIO I DIGITALITZACIÓ
 
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdf
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdfJFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdf
JFCatalà 5è - EmmaVAZQUEZRODRIGUEZ.pdf
 
JOCS FLORALSCatalà 6è - Isak Arenas.pdf
JOCS FLORALSCatalà 6è - Isak Arenas.pdfJOCS FLORALSCatalà 6è - Isak Arenas.pdf
JOCS FLORALSCatalà 6è - Isak Arenas.pdf
 

Introducció al desenvolupament d’aplicacions per a i os ctug

  • 1. Introducció al desenvolupament t oducc ó a dese o upa e t d’aplicacions per a iOS Enric Farguell Matesanz – DI efarguell@salle.url.edu
  • 2. Continguts  Què ensenyarem en aquest curs?  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 3. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 4. Introducció - iPhone  Presentació de l’iPhone el Gener de 2007 (a la venda en Juny)  Va revolucionar la telefonia mòbil  Interfície multitàctil  Sistema Operatiu  Estètica  AppStore  Accessoris
  • 5. Introduccíó - iPod Touch  Presentat el Setembre de 2007  Similar a l’iPhone  Mateix hardware base (sense telèfon ni GPS)  Mateix sistema operatiu  Més barat i accessible
  • 6. Introducció - iPhone + iPod  Actualment més de 120 milions de dispositius venuts  AppStore + iTunes: vendes centralitzades  Més de 240.000 aplicacions disponibles p p  Més de 4000 milions de descàrregues  Inesperada plataforma de jocs
  • 7. Introducció - iPad  A la venda el 3 d’abril de 2010 en USA  Basat en iOS  Accessoris d’Apple (Teclat, SD-Card, USB, adaptador pp ( p VGA...)  Abans de la distribució ja va suposar una revolució j p (tabletes Android)  Més d’un milió d’unitats venudes en 28 dies  Més de 20.000 Apps natives
  • 8. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 9. Distribució d’aplicacions d aplicacions  Distribució de software iOS  Tipus de llicència i de distribució (Ad-Hoc, AppStore)  Desenvolupament en:  Objective-C  Flash  Provisionat d dispositius P ii de di ii  Identificador únic: UDID  Claus i certificats Cl ifi
  • 10. Distribució - iPhone 3 x 3.x  Característiques destacades:  Mac OS X empotrat  Llibreries estándard  Programable en C C++ Objective C C, C++, Objective-C...  Optimitzat per al dispositiu  Novetats de la versió:  Compra de continguts  Connectivitat simplificada p  Notificacions PUSH  Mapes y geolocalització  Control d’accesoris  Més de 1000 APIs noves
  • 11. Distribució - iPhone 3 x 3.x  Limitacions imposades:  Accés només a alt nivell  Intèrprets programables (Java, Flash, C64...)  Multitasca no permesa  Rendiment  Seguretat S  Limitacions distribució AppStore, a afegir  Usabilitat disseny U bili i di  La distribució Ad-Hoc no limita
  • 12. Distribució - iPhone 4 x 4.x  Novetats:  iPhone OS canvia a iOS  Multitasca  iAd  Game Center  Millor interfície d’usuari d usuari  Mail millorat  Empresa: p  Millor seguretat  Apps via WiFi i 3G  Gestió de dispositius  Més de 1.500 APIs noves
  • 13. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 14. Eines de desenvolupament  Dashcode  Disseny web natiu, no accedeix a perifèrics  XCode 3 - 4  Codi Obj-C, C, C++  Interface Builder (integrat XCode 4) ( g )  Disseny assistit: WYSIWYG  Instruments  Eina de depuració i detecció de fallades de memòria
  • 15. Descripció de l’Objective C l Objective-C  Mètode:  Pot ser:  Dirigit a una classe (mètode de classe): no cal tenir un objecte instanciat en memòria  Dirigit a una instància (mètode d’instància): em dirigeixo a un objecte en memòria  Els mètodes es criden com a missatges  El format és:  [receptor missatge];  Amb paràmetres:  [receptor missatge: (tipus1) par1 missatgePar2: (tipus2) par2];
  • 16. Classes: interfície i implementació  Per a crear una classe necessito una interfície i una implementació:  Interfície: estudiant h estudiant.h  Implementació: estudiant.m  Per a definir les funcions he de fer:  Funcions d classe: F de l  +(tipusDeRetorn)nomFuncio;  Funcions d’instància:  -(tipusDeRetorn)nomFuncio;  La sintaxi de la interfície és:  @ @interface NomClasse: PareDelQueHereto {  // Declaració de variables membre  }  // Declaració de mètodes  @end  Si no em cal heretar de cap altre classe, he d’heretar de NSObject
  • 17. Classes: interfície i implementació  La implementació és l’arxiu .m  La i L sintaxi é i és:  @implementation NomClasse  // Implementació dels mètodes  @end  La implementació dels mètodes segueix la sintaxi: p g  Per a funcions de classe:  +(tipusDeRetorn) nomFuncio: (tipus1){  //Implementació de la funció  }  Per a funcions d’instància:  -(tipusDeRetorn) nomFuncio: (tipus1){  //Implementació de la funció  }
  • 18. Exemple 1  Crea un projecte tipus View-based  Sobre l’arxiu NomProjecteAppDelegate.c, busca la funció: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  Dins d’aquesta funció, posa-hi:  NSLog(@”Hello from didFi i h”) NSL (@”H ll f didFinish”);  Sobre l’arxiu NomProjecteViewController.c, busca la funció: -(void)viewDidLoad  Dins d’aquesta funció, posa-hi:  NSLog(@”Hello from viewDidLoad”);  Compila, executa i mira què surt per la consola
  • 19. Exemple 2  Sobre el projecte anterior  Sobre l’arxiu NomProjecteAppDelegate.h, posa-hi la capçalera:  -(void) saySomething:(NSString*) aString;  Sobre l arxiu NomProjecteAppDelegate c implementa la funció: l’arxiu NomProjecteAppDelegate.c,  -(void) saySomething:(NSString*) aString{  NSLog(aString); g( g)  }  Busca la funció: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  Fes la crida:  [self saySomething:@”Hello world.”];
  • 20. Exemple 3  Sobre el projecte anterior  Sobre l’arxiu NomProjecteViewController.h, posa-hi la capçalera:  -(void) saySomething:(NSString*) aString;  Sobre l arxiu NomProjecteViewController h implementa la funció: l’arxiu NomProjecteViewController.h,  -(void) saySomething:(NSString*) aString{  NSLog(aString); g( g)  }  A l’arxiu NomProjecteAppDelegate.c, busca la funció: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  Fes la crida:  [viewController saySomething:@”Hello from viewController.”];
  • 21. Iniciat d’objectes d objectes  Tots els objectes es declaren com a punters en Obj-C  meuOjbecte * Ojb *mevaVariable; V i bl  Per tant, sempre cal demanar memòria per a un objecte quan el volem fer servir:  mevaVariable=[meuObjecte alloc];  alloc és funció de classe, no d’instància: +(id) alloc;  alloc només demana memòria i inicia a zero.  S’ha d’iniciar els objectes amb una funció que sempre comença amb init:  El mètode init està implementat a NSObject per defecte.  Es pot sobreescriure, però és recomanable crear un inicialitzador p p que comenci amb la paraula init.  El retorn de qualsevol funció init és sempre id, per si alguna classe que hi hereti necessita treballar amb un tipus de dades diferent diferent.
  • 22. Gestió de memòria  La memòria pels objectes es demana amb alloc  alloc ve implementat per defecte des de NSObject  Per a poder alliberar memòria, cal crear dealloc  Aquesta rutina no està implementada per defecte a les classes pròpies.  A diferència d’alloc és mètode d’instància: d alloc, d instància:  -(void) dealloc  {  //Alliberem tots els objectes per als que haguem demanat memòria.  //Alliberem el mètode pare.  [super dealloc];  }  Cal crear un dealloc, encara que només sigui per a alliberar el pare!
  • 23. Declaració de propietats  L’accés a les variables pròpies d’una classe es fa a partir de les propietats  Les propietats es van incloure recentment per a aconseguir operacions que antigament requerien molt de codi; realment el i ti t i lt d di l t l que fan és implementar un setter i un getter  El setter dóna un valor a la variable  El getter llegeix el valor de la variable  En general, les variables pròpies d’una classe d’Obj-C, reben el d una d Obj C, nom de propietats, i per a cada objecte declarat dins la classe caldrà definir-les  La sintaxi és:  @property (atribut1, atribut2, ...) tipus nomVariable;
  • 24. Declaració de propietats  Les propietats es divideixen en:  De modificació de setter i getter: per defecte, el getter és el nom de la propietat i el setter és g p , g p p setNomPropietat. La sintaxi és:  setter=nomSetter  getter=nomGetter  D assignació D’assignació (mutuament excloents):  readwrite: de lectura i escriptura, és el valor per defecte  readonly: només de lectura  Del setter (mutuament excloents):  assign: copia directament la informació d’una variable a la altra  copy: copia la informació i allibera el valor anterior de la variable  retain: copia la informació i allibera el valor anterior de la variable, la variable actual ha de fer un retain  D’atomicitat  atomic: la execució del setter i el getter no es pot interrompre per cap altre fil en l’entorn multifil d’un S.O. És el valor per defecte  non-atomic: la execució es pot interrompre, però també és molt més ràpid p p p p  Algunes propietats només funcionen amb objectes i no amb POD (Plain, Old Data)
  • 25. Exemple 4  Sobre el projecte anterior  A la interfície de NomProjecteViewController:  Declara NSString *texteAPintar;  Defineix les seves propietats:  @property(nonatomic, retain)NSString *texteAPintar;  A la implementació fes:  @synthesize texteAPintar;  Sobre la funció saySomething, afegim una mica de codi:  -(void) saySomething:(NSString*) aString{  NSLog(aString); g( g);  NSLog(texteAPintar);  }  A l’arxiu NomProjecteAppDelegate.c, busca la funció: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  Implementa aquestes línies de codi:  viewController.texteAPintar=@ I viewController texteAPintar=@”I use a NSString property”; property. ;  [viewController saySomething:@”Hello from viewController.”];  Prova: [viewController saySomething:[NSString stringWithString:@”Hello from viewController.”]];
  • 26. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 27. UIView  Desenvolupar per a iOS implica treballar amb vistes.  La vista és el que es mostra per pantalla.  Es poden tenir vistes múltiples sobre la pantalla, a forma de stack. stack  La vista que es veu és la primera, la resta es superposen.  Totes les classes que hereten de UIView poden rebre otes es c asses e ete e U V ew po e eb e crides a funcions de UIView.  Les classes de UIView pertanyen al UIKit Framework.  COCOA inclou per defecte UIKit.  UILabel i UIButton hereten de UIView, i inclouen d’altres variables interenes d’altres tipus. d altres tipus  Si ho busqueu al help d’Apple, assegureu-vos de buscar-ho a la SDK de iOS, i no a la de Mac OS!
  • 28. UIView  Interface Builder (IB) és una eina WYSIWYG.  Permet disposar qualsevol classe que hereta de UIVie a la dis sar alse l e UIView pantalla de la App.  Tot el que es pot fer amb IB es pot fer p g q p p programàticament.  NO es recomana treballar amb els controladors alhora amb IB i programàticament, ja que el codi generat per IB no és accessible.  Per a obrir la aplicació IB cal prèmer sobre l’arxiu p p NomAppViewController.xib; aquesta és la vista editable per IB.  NO treballeu amb el MainWindow.xib; no funciona!  Salveu l’arxiu XIB en acabar la edició... l arxiu  Per a referenciar un objecte pintat a l’IB des del codi s’usa la macro IBOutlet.  Per P a referenciar una f ió relacionada a un element a través f i funció l i d l é d’IB s’usa la macro IBAction.
  • 29. UILabel i UIButton  UILabel és una classe que permet mostrar camps de text com a etiquetes:  Es pot canviar el seu contingut com a camp de text: té una propietat i i interna que é text, d l tipus NSS i és del i NSString.  El text, imatges associades i posició es poden editar tant a través d’IB com programàticament d IB programàticament.  UIButton és una classe que permet generar botons a l aplicació: l’aplicació:  Es pot relacionar a una funció, que es cridarà en prémer el botó.  De nou, tant el text com les imatges com la posició es poden editar a través de IB i programàticament.
  • 30. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 31. NSTimer  NSTimer és una classe que permet crear un cronògraf intern on es va cridant una funció cada vegada que passa un determinat període de temps.  Es crea i instancia amb una funció de classe:  scheduledTimerWithTimeInterval:...  Aquesta funció incorpora un autorelease. Per tant, no es pot fer release del timer (proveu a fer-ho...).  Per P a aturar-lo i alliberar-lo cal cridar una funció específica, que l llib l l id f ió ífi és invalidate.  Un objecte de NSTimer es pot crear d’altres formes però d altres formes, aquesta és la automàtica.
  • 32. Exemple 5  Crea un nou projecte tipus View-based.  Sobre l’arxiu AppViewController.h, afegeix: pp g  NSTimer *myTimer;  int tCount;  Sobre l’arxiu AppViewController.c, busca viewDidLoad.  Dintre de la funció, implementa: Di d l f ió i l  myTimer=[NSTimer scheduled TimerWithTimeInterval: 1.0 target:self selector:@selector(timerSpeaks) userInfo:nil repeats:YES];  tCount=0;  En una funció separada, implementa:  -(void)timerSpeaks{  tCount++;  if(tCount 60){ if(tCount==60){  NSLog(@”Timer out”);  [myTimer invalidate];  }  else NSLog([NSString stringWithFormat:@”Happened %d seconds”, tCount]);  }  Com a exemple 6, proveu a fer la crida des d’AppDelegate en lloc de AppViewController...
  • 33. Continguts  Índex  Introducció al desenvolupament d’aplicacions per a iPhone – Historia, estat de l’art i conceptes.  Fonaments d l d F de la distribució d’aplicacions. b ó d’ l  Eines de desenvolupament: Xcode i Interface Builder (IB).  Classes UIL b l i UIB Cl UILabel UIButton a través de IB. é d IB  Classe NSTimer: control de temps a la aplicació.  Hands H d on coding: creació d’un petit joc amb tots els elements di ió d’ tit j bt t l l t anteriors.
  • 34. Hands on coding  Feu un joc amb tot el que heu après fins ara, que respongui a aquestes especificacions:  El joc és un compte enrere de 10 segons on l’usuari ha de tocar tantes vegades com pugui un botó fins que s’esgota el d i b ó fi ’ l temps.  El joc s inicia polsant un botó diferent. s’inicia diferent  La vista ha de contenir aquests objectes:  2 UILabels, 2 UIButton  Els UILabels han d’informar de 2 coses:  Temps restant. p  Vegades que s’ha premut el botó de puntuació.
  • 35. Moltes gràcies per la seva atenció! Introducció al desenvolupament t oducc ó a dese o upa e t d’aplicacions per a iOS Enric Farguell Matesanz – efarguell@salle.url.edu Dep. d’informàtica, Enginyeria i Arquitectura La Salle