Introducere în dezvoltarea SDK pentru iPhone

Mobiletuts + va acoperi toate platformele mobile majore - iPhone, Windows, Android și Blackberry. Acest tutorial se uită la dezvoltarea cu SDK-ul iPhone. Veți afla informații despre platforma iPhone, cum să configurați și configurați mediul dvs. de dezvoltare și pașii necesari pentru a crea o aplicație simplă pentru modul cookie!

Despre platformă

iOS este o varianta mobila optimizata de Mac OS X creata de Apple Inc. Este distribuita cu toate dispozitivele iPod touch, iPhone si iPad si ocupa doar aproximativ 500 MB de spatiu de stocare.

Există trei abordări distincte pentru dezvoltarea iOS:

  1. Dezvoltarea aplicațiilor web

    Originalul iPhone OS 1.0 a solicitat tuturor aplicațiilor non-Apple să fie bazate pe web și executate în browser-ul Web Mobile Safari. Deoarece Mobile Safari nu acceptă pluginuri precum Adobe Flash sau Microsoft Silverlight, acest lucru înseamnă că toate aplicațiile terților au fost inițial scrise în HTML, CSS și JavaScript. Această metodă de dezvoltare rămâne o opțiune viabilă în prezent, în special pentru aplicații care trebuie să fie accesibile pe o gamă largă de dispozitive sau pentru echipe de dezvoltare cu o aversiune față de Mac OS X și Obiectiv C.

  2. Dezvoltarea aplicațiilor native

    Odată cu lansarea iPhone OS 2.0 și introducerea iPhone SDK și iTunes App Store, dezvoltatorii au fost încurajați să scrie aplicații native pentru iPhone folosind Obiectiv-C și Xcode. Aplicațiile native sunt binare compilate care sunt instalate și executate pe dispozitivul utilizatorului. Aceste aplicații beneficiază de un acces considerabil la hardware-ul dispozitivului și numai binarele aplicațiilor native pot fi distribuite prin iTunes App Store. Deoarece sistemul de operare iPhone funcționează pe dispozitive iPod touch, iPhone și iPad, majoritatea aplicațiilor pot fi construite pentru toate cele trei dispozitive cu doar variații de coduri minore, deși există avantaje semnificative pentru optimizarea aplicației pentru ecranul iPad mult mai mare.

  3. Dezvoltarea aplicațiilor hibride

    De asemenea, este posibil să combinați abordările de mai sus și să creați aplicații iPhone instalate pe dispozitivele unui utilizator, să fie scrise în principal în HTML, CSS și JavaScript și să fie lansate prin iTunes App Store. Aceste aplicații cresc în popularitate datorită bibliotecilor open-source precum QuickConnect și a unor platforme precum PhoneGap, AppCelerator și rhomobile.

Mobiletuts + va acoperi toate metodele de mai sus de dezvoltare a sistemului de operare iPhone, dar acest tutorial se va axa pe dezvoltarea aplicațiilor native cu SDK-ul oficial pentru iPhone folosind Obiectiv-C și Xcode. Aceasta este metoda recomandată de Apple de a construi aplicații iPhone originale pentru distribuție în iTunes App Store.

Noțiuni de bază

Pentru a dezvolta aplicațiile SDK pentru iPhone și pentru a continua acest tutorial, veți avea nevoie de următoarele:

  • Un Mac bazat pe Intel care rulează Mac OS X Snow Leopard

    Pentru a scrie aplicații native cu SDK-ul oficial iOS și pentru a testa aplicațiile în Apple iPhone sau iPad Simulator oficial, va trebui să puteți rula Snow Leopard, cel mai recent sistem desktop și laptop de la Apple.

  • Un cont Apple Developer.

    Acest lucru este necesar pentru a descărca iPhone SDK 4, ID-ul Xcode și Simulatorul iPhone. Va trebui să vă înregistrați pentru un cont Apple Developer aici. Înregistrarea este gratuită și vă va permite să rulați aplicații în simulatorul iPhone. Un cont gratuit este tot ce este necesar pentru acest tutorial, dar pentru a rula efectiv aplicațiile pe un dispozitiv sau pentru a publica prin iTunes App Store, va trebui să plătiți pentru a vă înscrie în Programul de dezvoltatori iPhone.

  • Xcode și SDK-ul iPhone 4.

    După ce vă conectați la contul dvs. de dezvoltator, descărcați și instalați Xcode 3.2.5 și iPhone SDK 4 (sau cele mai recente versiuni disponibile).

După ce aveți cele de mai sus, ar trebui să fiți gata să vă aruncați în clădirea "Fortune Crunch", o aplicație simplă pentru iPhone care va permite utilizatorilor să "crunchieze" un cookie de avere și să citească un mesaj.

Pasul 1. Lansați Xcode și creați-vă proiectul

Xcode este un mediu integrat de dezvoltare (IDE) care combină multiplele instrumente necesare pentru a construi un program iPhone într-o singură aplicație. Lansați acum Xcode căutându-l în lumina reflectoarelor sau utilizând căutarea pentru a naviga la calea implicită de instalare / Dezvoltator / Applications / Xcode.

Selectați "Creați un nou proiect Xcode" din caseta de dialog care apare.

Selectați "Aplicație" din iOS din coloana din stânga. Familiarizați-vă cu diferitele tipuri de șabloane de aplicații disponibile în panoul de conținut. Acest tutorial va fi o aplicație simplă, cu o singură vizualizare, deci selectați pictograma "Aplicație bazată pe vizualizare" și faceți clic pe "Alegeți".

Introduceți textul "FortuneCrunch" în câmpul "Salvați ca" pentru a numi proiectul nostru și faceți clic pe "Salvați".

Șablonul de proiect FortuneCrunch ar trebui afișat acum pe ecran.

Este important să realizăm că acest punct de pornire este un program complet executabil. Continuați și folosiți simulatorul iPhone pentru a rula șablonul făcând clic "Construiți și executați" sau prin selectarea Build> Build and Run din bara de meniu.

Deși șablonul de aplicație implicit este incredibil de neobișnuit, simulatorul iPhone nu este. Faceți clic pe butonul de pornire din simulator pentru a reveni la stația de andocare pentru iPhone și pentru a naviga în jur. De asemenea, rețineți următoarele reduceri ale simulatorului:

Comandă + săgeată stânga: Rotiți dispozitivul la stânga.

Comandă + săgeată dreapta: Rotiți dispozitivul corect.

Ctrl + Comandă + Z: Emulați un gest de agitare (acest lucru nu se va afișa vizual).

Pasul 2. Lansați interfața Builder și creați interfața

Interfața implicită furnizată împreună cu un șablon bazat pe Vizualizare este incredibil de plictisitoare, așa că continuăm să creăm un UI pentru aplicația cookie-urilor. Vom folosi două imagini cookie-uri care au fost luate special pentru acest tutorial: cookie-closed.png și cookie-crunched.png. Le puteți găsi în fișierul de descărcare atașat la această postare și sunt distribuite gratuit sub licența WTFPL.

După ce ați obținut imaginile necesare pentru cookie-uri, lansați Interface Builder accesând panoul "Groups & Files" din Xcode, extinzând folderul "Resurse" și dând dublu clic pe fișierul FortuneCrunchViewController.xib.

Interface Builder este un instrument grafic care vă permite să creați rapid și ușor aspectul aplicației fără a scrie o singură linie de cod Obiectiv-C. După cum vom vedea, vă permite, de asemenea, să definiți vizual relațiile dintre obiecte precum butoanele și metodele pe care le scrieți în aplicația dvs..

Există patru ferestre principale de interfață Builder pe care trebuie să le cunoașteți:

  1. Fereastra XIB. Această fereastră este intitulată "FortuneCrunchViewController.xib" și este o reprezentare a tot ceea ce este stocat în fișierul XIB pe care ați făcut dublu clic pentru a deschide Interface Builder. Proprietarul fișierului reprezintă o instanță a clasei FortuneCrunchViewController. Vă puteți gândi la fereastra Vizualizare în fereastra XIB ca pânză pentru aplicația dvs. cu o singură vizualizare și First Responder este un substituent pentru un obiect determinat la momentul executării, care va răspunde la acțiuni precum evenimentele de atingere.
  2. Vizualizarea instanței. Exemplu de vizualizare este, în esență, panza pentru această aplicație și ar trebui să pară familiarizată cu rularea aplicației șablon în pasul 1. Modificările pe care le faceți aici vor fi reflectate atunci când construim și executăm aplicația. Dacă instanța de vizualizare nu este deschisă sau dacă doriți să o deschideți din nou după închiderea acesteia, puteți face acest lucru făcând dublu clic pe pictograma "Vizualizare" din fereastra XIB.
  3. Librăria. Biblioteca afișează obiecte precum butoanele, etichetele și câmpurile de text disponibile pentru utilizare în vizualizarea dvs. Obiectele pot fi create în panza dvs. pur și simplu trăgându-le pe instanța de vizualizare. Pentru a deschide manual biblioteca, selectați Instrumente> Bibliotecă din bara de meniu.
  4. Inspectorul. Inspectorul oferă o vizualizare detaliată a atributelor și conexiunilor obiectelor dvs. Deschide fereastra inspectorului selectând Instrumente> Inspector dacă nu este deja deschisă. Rețineți cele patru file din partea superioară a ferestrei de inspectori: atribute, conexiuni, dimensiuni și identitate.

Acum că sunteți familiarizați cu Interface Builder, putem continua să configurați interfața aplicației noastre.

Mai întâi, să schimbăm culoarea de fundal de la gri la alb. Faceți acest lucru selectând instanța de vizualizare descrisă mai sus. Fereastra inspectorului ar trebui să aibă acum proprietățile de vizualizare încărcate. Selectați fila atribute din inspector, localizați atributul de fundal și paleta de culori și modificați culoarea în alb.

Acum, vom crea un buton pentru a reprezenta cookie-ul nostru de avere. În fereastra bibliotecii, tastați "UIButton" în caseta de căutare din partea de jos.

Apoi trageți butonul pe instanța de vizualizare.

Trebuie să adăugăm imaginile cookie-closed.png și cookie-crunched.png în directorul de resurse din Xcode. Reveniți la fereastra principală Xcode și trageți fiecare imagine în folderul Resurse din panoul Grupuri și fișiere. Va apărea o casetă de dialog. Bifați caseta care citește "Copiați articolele în dosarul grupului de destinații" și faceți clic pe "Adăugați".

Reveniți la Interface Builder și selectați UIButton adăugat mai devreme. Utilizați fila atributelor inspectorului pentru a modifica proprietatea imaginii în cookie-crunched.png și tipul de imagine la "personalizat". Redimensionați butonul UIButton la dimensiunea imaginii selectând Layout> Dimensiune pentru a se potrivi.

Acum avem pe ecran un cookie rupt. Să ne creăm averea prin tragerea unei UILabel de la bibliotecă la vedere. Schimbați textul pentru a citi "Happy iPhone Hacking" și utilizați fila atributelor inspectorului pentru a schimba fontul la dimensiunea de 12 puncte, iar fontul la aldine. Mariti UILabel-ul pentru a se potrivi cu textul si pozitionati-l peste alunecarea de hartie alba pe imaginea cookie-ului rupt. Acum, bifați caseta de selectare "Ascuns", deoarece dorim ca această etichetă să fie afișată numai după ce utilizatorul a apăsat butonul.

Selectați din nou butonul UIButton și modificați setarea imaginii din fila atributelor inspectorului la cookie-closed.png.

Asigurați-vă că ați salvat toată munca în Interface Builder, apoi treceți înapoi la Xcode și construiți și rulați din nou aplicația. Ar trebui să vedeți acum butonul cookie fortune pe ecran.

Pasul 3. Codificați fișierul Antet FortuneCrunchViewController

Cu interfața configurată, suntem gata să ne aruncăm în obiectivul C și să începem să scriem codul care va face funcția noastră de aplicație.

Înapoi în Xcode, selectați fișierul FortuneCrunchViewController.h sub Clase dosar în Grupuri și fișiere panoul. Acest fișier este ceea ce se numește un fișier "header", "interfață" sau "declarație" pentru clasa FortuneCrunchViewController. Aici declarăm variabilele interne, metodele, protocoalele și alte componente care vor fi folosite în clasă.

Clasa FortuneCrunchViewController a fost reprezentată vizual în Interface Builder ca "panza" pe care am reușit să o tragem pe instanțele UILabel și UIButton. Acum vom actualiza fișierul de antet de clasă astfel încât să putem face trimitere acestor obiecte mai târziu în codul nostru.

Actualizați fișierul antet efectuând următoarele modificări:

 #import  @interface FortuneCrunchViewController: UIViewController IBOutlet UIButton * fortuneCookieButton; IBOutlet UILabel * fortuneLabel;  @property (nonatomic, reține) IBOutlet UIButton * fortuneCookieButton; @property (nonatomic, păstrează) IBOutlet UILabel * fortuneLabel; - (IBAction) crunchCookie: (id) expeditor; @Sfârșit 

Linia 1 este cunoscută ca o directivă de preprocesor și în esență îi spunea preprocesorului să facă cadrul UIKit disponibil pentru utilizare în cadrul clasei.

Linia 3 utilizează @interface pentru a declara că aceasta este o definiție a interfeței pentru clasa FortuneCrunchViewController. Partea ": UIViewController" a acestei linii înseamnă că FortuneCrunchViewController este o clasă de vârstă a clasei UIViewController.

Linia 5 declară un pointer de clasă UIButton numit fortuneCookieButton ca un IBOutlet. Eticheta IBOutlet nu are nici o semnificație reală pentru compilator și este folosită doar de Interface Builder pentru a determina ce obiecte din clasă pot fi conectate la reprezentarea lor vizuală în fișierul Interface Builder XIB. Clasa UIButton ar trebui să fie familiarizată cu munca noastră la pasul 2.

Linia 6, similară cu linia 5, declară un indicator de clasă UILabel numit fortuneLabel ca un IBOutlet.

Liniile 10-11 utilizează instrucțiunea @property pentru a spune compilatorului că avereaCookieButton și fortuneLabel vor fi accesibile ca proprietăți ale clasei, dar vom declara metodele de a le accesa dinamic mai târziu.

Linia 13 este o semnătură de funcție pentru metoda crunchCookie. Partea - (IBAction) a declarației declară această metodă a tipului de date IBAction, care este în esență același ca și tipul de date void, singura diferență notabilă fiind aceea că IBAction face ca această metodă să fie accesibilă ca acțiune în Interface Builder . Partea "(id) expeditor" a instrucțiunii îi spune compilatorului să accepte un argument numit "expeditor" al tipului de date "id". În Cocoa-Touch, id-ul este un tip de date generic, care poate fi o referință indicatoare a oricărei subclase a NSObject și în aplicația noastră apelarea metodei crunchCookie prin apăsarea averiiCookieButton trimite de fapt o referință la fortuneCookieButton ca obiect "expeditor". Acest lucru nu este necesar pentru cererea noastră, dar este inclus aici pentru că este o convenție comună pe care o veți vedea de multe ori.

În cele din urmă, linia 15 indică faptul că acesta este sfârșitul declarației @interface.

Pasul 4. Conectați interfața Builder la FortuneCrunchViewController

Acum, că am declarat variabilele interne și metodele care vor fi utilizate de aplicația noastră și le-am etichetat cu IBOutlet și IBAction, trebuie să finalizăm cercul prin conectarea obiectelor Interface Builder la clasa FortuneCrunchViewController.

Faceți dublu clic pe fișierul FortuneCrunchViewController.xib și lansați din nou Interface Builder.

Faceți clic dreapta sau faceți clic pe obiectul Proprietarul fișierului din controlerul XIB. Va apărea o casetă care afișează diferitele obiecte din Proprietarul fișierelor care pot fi conectate la obiecte din XIB. Observați că "vizualizarea" este deja conectată pentru noi.

Faceți clic pe cercul din dreapta de avereCookieButton și trageți din caseta Proprietarul fișierului la UIButton real pe panza. Caseta Proprietarul fișierului ar trebui să fie actualizată grafic pentru a afișa conexiunea dintre avereaCookieButton și obiectul UIButton în același mod în care indică conexiunea dintre priza de vizualizare și Vizualizare obiect.

Faceți același lucru pentru conexiunea FortuneLabel.

Acum trebuie să stabilim o legătură între metoda UIButton și metoda noastră crunchCookie. Interface Builder ne oferă multe modalități diferite de a face acest lucru. Faceți clic pe butonul de control sau faceți clic cu butonul din dreapta pe butonul nostru de cookie-uri pentru a afișa o listă cu evenimentele disponibile.

Două dintre cele mai frecvent utilizate opțiuni includ:

  • Aterizare. Această opțiune îi spune pe Interface Builder să aprindă metoda noastră atunci când detectează un deget "atingeți" degetul pe element.
  • Touch Up Inside.Această opțiune face ca Interface Builder să aprindă metoda noastră după ce utilizatorul a atins atât un deget în jos asupra elementului, cât și ulterior a eliberat degetul din element.

Touch Up Inside este, de obicei, opțiunea aleasă atunci când lucrați cu butoane, dar în cazul nostru, dorim ca cookie-ul de avere să rupă momentul în care degetul utilizatorului îl atinge, astfel încât vom lega evenimentul Touch Down de metoda noastră crunchCookie. Faceți acest lucru prin tragerea de la cerc la obiectul Proprietății fișierului din fereastra XIB și apoi asigurați-vă că selectați metoda crunchCookie din caseta de dialog care apare.

Salvați-vă munca în Interface Builder și apoi treceți înapoi la Xcode.

Pasul 5. Codificați fișierul de implementare FortuneCrunchViewController

Cu fișierul Interfață Builder XIB configurat și interfața de clasă scrisă, tot ce rămâne este de a codifica metodele de clasă pe care aplicația le va folosi pentru a distruge cookie-ul nostru și pentru a afișa eticheta de avere. Fișierul de implementare a clasei este FortuneCrunchViewController.m, deschideți-l acum, selectând-l din Clase dosar în Grupuri și fișiere panou.

Actualizați codul la următoarele:

 #import "FortuneCrunchViewController.h" @implementation FortuneCrunchViewController @synthesize fortuneCookieButton; @synthesize fortuneLabel; // Această metodă modifică imaginea cookie când apăsați butonul: - (IBAction) crunchCookie: (id) expeditor NSLog (@ "In crunchCookie"); [fortuneCookieButton setImage: [UIImage imageNamed: @ "cookie-crunched.png"] pentruState: UIControlStateNormal]; fortuneLabel.hidden = NO;  // Aceste metode se referă la gestionarea memoriei: - (void) viewDidUnload [release fortuneCookieButton]; fortuneCookieButton = nil;  - (void) dealloc [fortuneCookieButton release]; [release fortuneLabel]; [super dealloc];  @Sfârșit 

Linia 1 este directiva preprocesorului pentru a include fișierul de interfață înainte de a compila clasa.

Linia 3 începe implementarea clasei noastre.

Liniile 5 - 6 utilizează instrucțiunea @synthesize pentru a crea dinamic metode pentru accesarea și salvarea obiectelor FortuneCookieButton și fortuneLabel pointer pe care le-am declarat în fișierul antet. Acest pas elimină necesitatea de a obține codul getVariable () și setVariable () pentru toate obiectele pe care le declarăm.

Metoda crunchCookie se găsește pe liniile 8-12, și este inima acestui program.

Pe linia 9-10 vom crea un nou obiect UIImage folosind imaginea cookie-crunched.png. Apoi trecem acest obiect în setImage: forState: metoda obiectului fortuneCookieButton. Această metodă va schimba atributul de imagine pe care l-am setat manual în cookie-closed.png în Interface Builder la noul obiect UIImage în care am trecut. Transmisia mesajelor este o componentă centrală a limbajului Objective-C și urmează în general acest model:

 [metoda myObjectParam1: metoda1 valoareParam2: valoarea2]; 

Linia 11 accesează atributul "ascuns" al obiectului fortuneLabel și își stabilește valoarea la NO. Aceasta va dezvălui obiectul de etichetă după actualizarea imaginii la cookie-ul crunched.

Toate liniile rămase se ocupă de problemele de gestionare a memoriei, care vor fi acoperite în profunzime în viitoarele tutoriale. Pentru a rezuma totuși, atunci când viziunea noastră se descarcă, trebuie să fiți sigur că ați lansat orice obiecte IBOutlet pe care le-ați creat. În ceea ce privește metoda dealloc, acesta este distrugatorul de obiecte și se numește atunci când obiectul este pe cale să fie distrus. Ambele metode există deja în clasă în mod prestabilit, dar va trebui să adăugați liniile care le sunt afișate.

Cu codul de mai sus, suntem gata să salvăm, să compilam și să executăm aplicația finită!

Concluzie

Acest tutorial vă oferă o scurtă introducere în dezvoltarea aplicațiilor native iPhone OS cu Xcode, Interface Builder și SDK iPhone. Am acoperit câteva dintre elementele de bază ale platformei și ați avut picioarele ude cu Interface Builder și Xcode.

Materialul acoperit de acest tutorial va fi extins în tutorialele viitoare, pe măsură ce ne vom arunca mai departe în obiectivele C, Cocoa-Touch și SDK-ul iPhone.

Cod