Mobiletuts + vil dekke alle store mobile plattformer - iPhone, Windows, Android og Blackberry. Denne opplæringen ser på utvikling med iPhone SDK. Du lærer informasjon om iPhone-plattformen, hvordan du konfigurerer og konfigurerer utviklingsmiljøet ditt, og trinnene som trengs for å lage en enkel formue for fortune-informasjonskapsler!
iOS er en mobiloptimalisert variant av Mac OS X opprettet av Apple Inc. Den distribueres med alle iPod touch-, iPhone- og iPad-enheter, og bruker kun 500 MB lagringsplass.
Det er tre forskjellige tilnærminger til iOS-utvikling:
Den opprinnelige iPhone OS 1.0 krevde at alle ikke-Apple-applikasjoner var webbaserte og utført i nettleseren Mobile Safari. Fordi Mobile Safari ikke støtter programtillegg som Adobe Flash eller Microsoft Silverlight, betydde dette at alle tredjepartsapplikasjoner ble opprinnelig skrevet i HTML, CSS og JavaScript. Denne utviklingsmetoden er fortsatt et levedyktig alternativ i dag, spesielt for applikasjoner som må være tilgjengelige på et bredt spekter av enheter eller for utviklingsgrupper med aversjon mot Mac OS X og Objective-C.
Med utgivelsen av iPhone OS 2.0 og introduksjonen til iPhone SDK og iTunes App Store, har utviklere blitt oppfordret til å skrive innfødte applikasjoner for iPhone ved hjelp av Objective-C og Xcode. Native applikasjoner er kompilert binære filer som er installert og utført på brukerens enhet. Disse programmene får stor tilgang til maskinvareenheten, og bare innfødte programbinarier kan distribueres gjennom iTunes App Store. Fordi iPhone OS kjører på iPod touch-, iPhone- og iPad-enheter, kan de fleste applikasjoner bygges for alle tre enhetene med kun mindre kodevariasjoner, selv om det er betydelige fordeler for å optimalisere søknaden din for den mye større iPad-skjermen.
Det er også mulig å kombinere ovennevnte tilnærminger og opprette iPhone-applikasjoner som er installert på en brukers enhet, er skrevet hovedsakelig i HTML, CSS og JavaScript, og er utgitt gjennom iTunes App Store. Slike applikasjoner vokser i popularitet takket være open source-biblioteker som QuickConnect og plattformer som PhoneGap, AppCelerator og rhomobile.
Mobiletuts + vil dekke alle de ovennevnte metodene for iPhone OS-utvikling, men denne opplæringen vil fokusere på opprinnelig applikasjonsutvikling med den offisielle iPhone SDK ved hjelp av Objective-C og Xcode. Dette er Apples anbefalte metode for å bygge opprinnelige iPhone OS-applikasjoner for distribusjon i iTunes App Store.
For å utvikle iPhone SDK-applikasjoner og fortsett denne opplæringen, trenger du følgende:
For å kunne skrive innfødte applikasjoner med den offisielle iOS SDK og teste applikasjonene dine i Apples offisielle iPhone eller iPad Simulator, må du kjøre Snow Leopard, det nyeste stasjonære og bærbare operativsystemet fra Apple..
Dette kreves for å laste ned iPhone SDK 4, Xcode IDE og iPhone Simulator. Du må registrere deg for en Apple Developer-konto her. Registreringen er gratis, og lar deg kjøre programmer i iPhone-simulatoren. En gratis konto er alt som trengs for denne opplæringen, men for å faktisk kjøre appene dine på en enhet eller publisere gjennom iTunes App Store må du betale for å registrere deg i iPhone Developer Programmet.
Etter å ha logget på utviklerkontoen din, last ned og installer Xcode 3.2.5 og iPhone SDK 4 (eller de nyeste tilgjengelige versjonene).
Etter at du har det ovenfor, bør du være klar til å dykke i å bygge "Fortune Crunch", en enkel iPhone-applikasjon som lar brukerne "knase" en formue og lese en melding.
Xcode er et integrert utviklingsmiljø (IDE) som kombinerer flere verktøy som er nødvendige for å bygge et iPhone-program i ett program. Start Xcode nå ved å søke etter det i søkelys eller ved hjelp av Finder for å navigere til standard installasjonsbanen til / Developer / Programmer / Xcode.
Velg "Opprett et nytt Xcode-prosjekt" fra dialogboksen som vises.
Velg "Application" under iOS i den venstre kolonnen. Bli kjent med de forskjellige typene applikasjonsmaler som er tilgjengelige i innholdspanelet. Denne opplæringen vil være en enkel, enkeltvisningsprogram, så velg ikonet "Vis-basert program" og klikk "Velg".
Skriv inn teksten "FortuneCrunch" i feltet "Lagre som" for å nevne prosjektet vårt og klikk "Lagre".
FortuneCrunch-prosjektmalen skal nå vises på skjermen.
Det er viktig å innse at dette utgangspunktet er et fullt utførbart program. Gå videre og bruk iPhone-simulatoren til å kjøre malen ved å klikke "Bygg og kjøre" eller ved å velge Bygg> Bygg og kjøre fra menylinjen.
Selv om standardprogrammalen er utrolig sløs, er iPhone-simulatoren ikke. Klikk på Hjem-knappen i simulatoren for å gå tilbake til iPhone-dokken og bla gjennom litt. Legg også merke til følgende simulatortyper:
Kommando + venstre pil: Vri enheten til venstre.
Kommando + høyre pil: Roter enheten riktig.
Ctrl + Kommando + Z: Emulerer en ristebevegelse (dette vises ikke visuelt).
Standardgrensesnittet som er utstyrt med en visningsbasert mal, er utrolig kjedelig, så la oss fortsette ved å lage vår formue for informasjonskapsler. Vi vil bruke to formuebilder som ble tatt spesielt for denne opplæringen: cookie-closed.png og cookie-crunched.png. Du finner dem i nedlastingsfilen som er vedlagt dette innlegget, og de distribueres fritt under WTFPL-lisensen.
Etter å ha hentet de nødvendige fortune cookie-bildene, start Interface Builder ved å gå til "Grupper og filer" -ruden i Xcode, utvide mappen "Resources" og dobbeltklikke på filen FortuneCrunchViewController.xib.
Interface Builder er et grafisk verktøy som lar deg raskt og enkelt lage oppsettet av søknaden din uten å skrive en enkelt linje med Objective-C-koden. Som vi vil se, kan du også visuelt definere forhold mellom objekter som knapper og metodene du skriver i søknaden din.
Det er fire hovedgrensesnittbyggervinduer som du trenger å vite om:
Nå som du er kjent med Interface Builder, kan vi fortsette å sette opp programmets grensesnitt.
Først, la oss endre bakgrunnsfargen fra grå til hvit. Gjør dette ved å velge Vis instans som beskrevet ovenfor. Inspektørvinduet skal nå ha visningsegenskapene lastet. Velg fanen attributter i inspektøren, finn bakgrunnsattributtet og fargepaletten, og endre fargen til hvit.
Nå skal vi lage en knapp for å representere vår formuekake. Skriv inn "UIButton" i søkeboksen nederst i biblioteksvinduet.
Deretter drar du knappen til visningseksemplet.
Vi må legge til cookie-closed.png og cookie-crunched.png-bildene til ressursmappen i Xcode. Bytt tilbake til hoved Xcode-vinduet, og dra hvert bilde til ressursmappen i panelet Grupper og filer. En dialogboks vises. Merk av i boksen som leser "Kopier elementer i destinasjonsgruppens mappe" og klikk "Legg til".
Bytt tilbake til Interface Builder og velg UIButton lagt til tidligere. Bruk fanen Inspektørattributter til å endre bildeegenskapen til cookie-crunched.png og bildetypen til "egendefinert". Endre størrelsen på UIButton til størrelsen på bildet ved å velge Layout> Størrelse som passer.
Vi har nå en ødelagt formue kake på skjermen. La oss skape vår formue ved å dra en UILabel fra biblioteket til visningen. Endre teksten for å lese "Happy iPhone Hacking" og bruk fanen Inspektørattributter for å endre skrift til 12 punktstørrelse og skrifttypen til fet skrift. Størr UILabel for å passe til teksten, og plasser den over hvitt papirsklippen på toppen av det ødelagte informasjonskapselbildet. Velg nå avkrysningsboksen "Skjult", da vi bare vil at denne etiketten skal vises når brukeren har tastet på knappen.
Velg UIButton igjen, og endre bildeinnstillingen i fanen Inspektørattributter til cookie-closed.png.
Husk å lagre alt arbeidet ditt i Interface Builder, og deretter bytte tilbake til Xcode og bygge og kjøre programmet på nytt. Du bør nå se den ubrutte formue-knappen på skjermen.
Med grensesnittet konfigurert, er vi klare til å dykke inn i Objective-C og begynne å skrive koden som vil gjøre vår applikasjonsfunksjon.
Tilbake i Xcode, velg filen FortuneCrunchViewController.h under klasser mappe i Grupper og filer ruten. Denne filen er det som er kjent som en "header," "grensesnitt," eller "declaration" -fil for FortuneCrunchViewController-klassen. Det er her vi erklærer de interne variablene, metodene, protokollene og andre komponenter som skal brukes i klassen.
FortuneCrunchViewController-klassen var visuelt representert i Interface Builder som "lerretet" som vi kunne dra til UILabel- og UIButton-forekomstene på. Vi skal nå oppdatere klassens headerfil, slik at vi kan referere til disse objektene senere i vår kode.
Oppdater topptekstfilen ved å gjøre følgende endringer:
#importere@interface FortuneCrunchViewController: UIViewController IBOutlet UIButton * fortuneCookieButton; IBOutlet UILabel * fortuneLabel; @property (nonatomic, behold) IBOutlet UIButton * fortuneCookieButton; @property (nonatomic, behold) IBOutlet UILabel * fortuneLabel; - (IBAction) crunchCookie: (id) sender; @slutt
Linje 1 er kjent som et preprosessor-direktiv, og forteller i hovedsak preprosessoren for å gjøre UIKIT-rammen tilgjengelig for bruk i klassen.
Linje 3 bruker @interface for å erklære at dette er en grensesnittdefinisjon for FortuneCrunchViewController-klassen. "UIViewController" -delen av denne linjen betyr at FortuneCrunchViewController er en barneklasse i UIViewController-klassen.
Linje 5 erklærer en UIButton klassepeker som heter FortuneCookieButton som en IBOutlet. IBOutlet-taggen har ingen reell betydning for kompilatoren, og brukes kun av Interface Builder for å bestemme hvilke objekter i klassen som kan kobles til deres visuelle representasjon i Interface Builder XIB-filen. UIButton-klassen bør være kjent fra vårt arbeid i trinn 2.
Linje 6, ligner linje 5, erklærer en UILabel-klassepekeren kalt fortuneLabel som en IBOutlet.
Linjer 10-11 bruker @property-setningen for å fortelle kompilatoren at fortuneCookieButton og fortuneLabel vil være tilgjengelige som egenskaper til klassen, men at vi vil erklære metodene for å få tilgang til dem dynamisk senere.
Linje 13 er en funksjons signatur for crunchCookie-metoden. (IBAction) -delen av erklæringen erklærer denne metoden for å være av IBAction-datatypen, som i det vesentlige er den samme som for tomriddatatypen, idet den eneste bemerkelsesverdige forskjellen er at IBAction gjør denne metoden tilgjengelig som en handling i Interface Builder . ": (Id) avsender" delen av setningen forteller kompilatoren å akseptere et argument kalt "sender" av "id" datatypen. I Cocoa-Touch er id en generisk datatype som kan være en pointerreferanse til en hvilken som helst underklasse av NSObject, og i vår søknad som kalles crunchCookie-metoden ved å trykke på fortuneCookieButton, vil faktisk sende en referanse til fortuneCookieButton som "sender" -objektet. Dette er ikke nødvendig for vår søknad, men det er inkludert her fordi det er en vanlig konvensjon som du ofte vil se.
Endelig indikerer linje 15 at dette er slutten av vår @ grensesnittdeklarasjon.
Nå som vi har erklært de interne variablene og metodene som skal brukes av vår søknad og merket dem med IBOutlet og IBAction, må vi fullføre sirkelen ved å koble våre grensesnittbyggerobjekter til FortuneCrunchViewController-klassen.
Dobbeltklikk filen FortuneCrunchViewController.xib og start Grensesnittsbygger igjen.
Høyreklikk eller kontroller, klikk på Eierobjektets fil i XIB-kontrolleren. En boks vises som viser de forskjellige objektene i filens eier som kan kobles til objekter i XIB. Legg merke til at "visningen" allerede er koblet til oss.
Klikk sirkelen til høyre for FortuneCookieButton, og dra fra filens Eier-boks til den faktiske UIButton på lerretet. Filens eier-boks skal oppdateres grafisk for å vise sammenhengen mellom fortuneCookieButton og UIButton-objektet på samme måte som det indikerer forbindelsen mellom visningsutgangen og View-objektet.
Gjør det samme for fortuneLabel-tilkoblingen.
Vi må nå etablere en forbindelse mellom UIButton og vår crunchCookie-metode. Interface Builder gir oss mange forskjellige måter å gjøre dette på. Kontroller klikk eller høyreklikk på vår formue-knappen for å vise en liste over tilgjengelige hendelser.
To av de mest brukte alternativene inkluderer:
Touch Up Innvendig er vanligvis alternativet valgt når du arbeider med knapper, men i vårt tilfelle ønsker vi at formuekaken skal bryte øyeblikket som brukerens finger berører den, så vi vil binde Touch Down-hendelsen til vår crunchCookie-metode. Gjør dette ved å dra fra sirkelen til objektets fil-objekt i XIB-vinduet, og deretter vær sikker på å velge crunchCookie-metoden fra dialogboksen som dukker opp.
Lagre arbeidet ditt i Interface Builder og deretter bytte tilbake til Xcode.
Med Interface Builder XIB-filen konfigurert og vårt klassegrensesnitt skrevet, er alt som gjenstår å kode klassemetoder som programmet vil bruke til å knase vår informasjonskapsel og vise formuemerket. Klassen implementeringsfilen er FortuneCrunchViewController.m, åpne den nå ved å velge den fra klasser mappe i Grupper og filer ruten.
Oppdater koden til følgende:
#import "FortuneCrunchViewController.h" @implementation FortuneCrunchViewController @synthesize fortuneCookieButton; @synthesize fortuneLabel; // Denne metoden endrer informasjonskapselet når du trykker på knappen: - (IBAction) crunchCookie: (id) avsender NSLog (@ "I crunchCookie"); [FortuneCookieButton setImage: [UIImage imageNamed: @ "cookie-crunched.png"] forState: UIControlStateNormal]; fortuneLabel.hidden = NO; // Disse metodene er relatert til minnehåndtering: - (void) viewDidUnload [fortuneCookieButton release]; fortuneCookieButton = nil; - (void) dealloc [fortuneCookieButton release]; [FortuneLabel release]; [super dealloc]; @slutt
Linje 1 er preprosessor-direktivet for å inkludere grensesnittfilen før kompilering av klassen.
Linje 3 begynner vår klasseimplementering.
Linjer 5 - 6 bruker @synthesize-setningen til å dynamisk opprette metoder for tilgang til og lagring av FortuneCookieButton og FortuneLabel-pekerobjektene vi erklærte i headerfilen. Dette trinnet fjerner behovet for å håndkode kode getVariable () og setVariable () metoder for alle objektene vi erklærer.
CrunchCookie-metoden er funnet på linjene 8-12, og er hjertet av dette programmet.
På linje 9 - 10 oppretter vi et nytt UIImage-objekt ved hjelp av cookie-crunched.png-bildet. Vi sender dette objektet inn i setImage: forState: metoden i fortuneCookieButton-objektet. Denne metoden vil endre bildeattributtet vi manuelt angir til cookie-closed.png i Interface Builder til det nye UIImage-objektet som vi passerte inn. Meldingsoverføring er en sentral komponent i Objective-C-språket, og følger vanligvis dette mønsteret:
[myObject methodParam1: value1 methodParam2: value2];
Linje 11 åpner attributtet "skjult" av fortuneLabel-objektet, og setter dets verdi til NO. Dette vil avsløre vårt etikettobjekt etter at bildet oppdateres til den knuste informasjonskapselen.
Alle resterende linjer omhandler problemstillinger for minnehåndtering som vil bli dekket i større dybde i fremtidige opplæringsprogrammer. For å oppsummere, når visningen vår laster ut, må du være sikker på at du har gitt ut noen IBOutlet-objekter du har opprettet. Når det gjelder deallokmetoden, er dette objektet destructor og kalles når objektet er i ferd med å bli ødelagt. Begge disse metodene finnes som standard allerede i klassen, men du må legge til linjene som vises til dem.
Med ovennevnte kode på plass, er vi klare til å lagre, kompilere og kjøre vår ferdige applikasjon!
Denne opplæringen har gitt deg en kort introduksjon til innfødt iPhone OS applikasjonsutvikling med Xcode, Interface Builder og iPhone SDK. Vi dekket noen av grunnleggende på plattformen, og du fikk føttene våte med Interface Builder og Xcode.
Materialet som er omtalt i denne opplæringen vil bli utvidet i fremtidige opplæringsprogrammer som vi dykker videre inn i Objective-C, Cocoa-Touch og iPhone SDK.