Hvordan bygge en iPhone-app
NyheterUtvikling for iOS App Store er en no-brainer. Hvis jeg sa at en mektig investering på £ 250 var nok til å åpne opp et marked på 150 millioner forbrukere, skulle ørene til enhver smart utvikler stikke opp.
Hvis jeg skulle legge til at mange av disse forbrukerne er Apple-fans som er ivrige etter å dele med sine penger i et forsøk på å kjøpe programvare som begrunner prisen på maskinvaren deres, så kan du godt begynne å se hvorfor det er nå 300 000 iPhone apps og 60 000 iPad apps to og et halvt år etter at App Store ble lansert.
Den store størrelsen på App Store er svimlende, med mer enn dobbelt så mange apper tilgjengelig som alle konkurrerende butikker kombinert.
I denne artikkelen vil jeg hjelpe med å starte din egen utvikling på App Store, og jeg håper det er oppmuntrende for deg at jeg selv gikk fra å ha null apps til å ha 20 godkjent og til salgs i løpet av litt over et og et halvt år . Jeg har ikke laget nok penger fra dem til å gå på pensjon, men de gir regelmessig inntekt - og det er en inntekt som bare kommer til å vokse etter hvert som Apple selger mer maskinvare.
Alt du trenger å bli med er en ide, en Mac (for koding), og denne opplæringen. La oss gå!
Krav
Å lage programvare for iOS-enheter - det er iPads, iPhones og iPod Touches - du trenger bare en programvarepakke: iOS SDK fra Apple.
Dette omfatter fire hovedkomponenter: Xcode-utviklingsmiljøet, der du skal skrive hele koden din; Grensesnitt Builder, som er et dra-og-slipp-brukergrensesnitt design system; biblioteker og headerfiler for å skrive koden i mål C (iPhones morsmål); og iOS-simulatoren, som lar deg kjøre en virtuell iPhone eller iPad på Mac-en.
Jeg burde understreke at dette bare kan gjøres på din Mac, fordi iOS SDK ikke er tilgjengelig for noen annen plattform. Faktisk er du ganske begrenset til å bruke Apples maskinvare-, programvare- og utviklingsverktøy. Dette er grunnen til at mange refererer til IOS-utviklingen som en "inngjerdet hage" - Apple er veldig beskyttende for hvem som lager apps og hva som går inn i butikken.
Mac-kravet er en hindring, du kan egentlig ikke hvelve over, men jeg vil si dette: Selv om du er dedikert til Windows eller Linux, er en Mac et utmerket kjøp. Vi ser sjelden mer solide eller pålitelige PCer.
SIMULATOR: Du kan teste appen på skrivebordet ditt ved hjelp av en simulator - bør spare deg for penger på en iOS-enhet for testing
Uansett, hvis du planlegger å jobbe bare inne i simulatoren, trenger du ikke å betale Apple noen penger for en testenhet eller en utviklerkonto - du kan gå direkte til http://developer.apple.com/ios og få tilgang til de gratis verktøyene.
Hvis du senere bestemmer deg for å ha bygget en app du vil selge, bør du hente en iPod Touch for testformål (£ 180), og deretter registrere deg for en kommersiell iOS-konto (£ 60). Hvis din 59p-app selger bare 500 eksemplarer - hvis bare 0.00033 prosent av iOS-eierne kjøper det - har du gjort pengene tilbake og alt annet er profitt.
Når du har opprettet kontoen din, må du laste ned den nyeste SDK. På tidspunktet for skriving er det Xcode 3.2.5 med iOS SDK 4.2. Denne pakken inneholder alt du trenger for å lage iPhone og iPad apps.
Installatøren er veldig enkel: bare klikk på 'Neste' til kopieringsprosessen starter, og gi den omtrent 30 minutter til å utføre sin magi, og du er klar til å komme i gang.
Bygg prosjektet ditt
Jeg er ikke interessert i å lære deg teori her - jeg vil vise deg hvordan du lager et virkelig prosjekt, slik at du, hvis du vil, kan forlenge det med dine egne tilpasninger og lage ditt eget verdifulle tillegg til App Store.
Vi skal lage en enkel oppgavelisteleder, som bygger på noen av de grunnleggende brukergrensesnittelementene som er vanlige for iOS-apper.
Først, brann opp Xcode - du bør finne den i 'Utvikler | Programmer-mappen på harddisken din. En velkomstskjerm skal vises, men du kan lukke det og velge 'Nytt | Nytt prosjekt "fra menyen.
Apple inneholder sju applikasjonsmaler ut av boksen, men den som er mest nyttig å begynne med (først og fremst fordi det kommer med en god del kode skrevet for deg) er det navigasjonsbaserte programmet. Velg det, så kaller det 'TaDaList' og lagre det på skrivebordet ditt.
En navigasjonsbasert app gir deg et brukergrensesnitt som ligner på Innstillinger-appen - du får en tittellinje øverst og en tabell med alternativer å velge mellom. Hvis du velger et alternativ, får du en ny skjerm til å panorere inn fra høyre. Du kan da gå tilbake til forrige skjerm ved å trykke på en "Back" -knapp - det er alt veldig intuitivt og lett å lære.
Du kan se grunnleggende applikasjonsmalen som Apple har opprettet for deg ved å trykke på [Kommando] + [Y] for å bygge og kjøre appen i simulatoren. Du kan se Apple Blue Bar øverst (det er tomt fordi vi ikke har skrevet noe der inne ennå), pluss tabellen med informasjon (igjen tom fordi vi ikke har fortalt appen hva som skal gå der).
Definer elementer
X-KODE: Xcode er ditt primære utviklingsmiljø for iPhone. Noen mennesker liker det, de fleste gjør det ikke
Før vi skriver inn noen gjøremålslister i tabellen, må vi definere hva disse elementene er og hvor de er lagret.
Først tenk på hva vi trenger for hver oppgave som skal lagres som, og hvordan de kan bli behjelpelig lagret som en gruppe. Du bør komme opp med disse to hovedpunktene: For det første er et gjøremålsliste, som "Feed the cat" eller "Take over the world", bare en streng.
I mål C er det to typer snor: 'NSString' og 'NSMutableString'. Den eneste forskjellen mellom de to er at den sistnevnte kan endres etter at den er opprettet.
For det andre er samlingen av gjenstander veldig enkel: da de legges til, må vi sette dem enten i begynnelsen eller slutten av vår eksisterende liste. Brukere må kunne lese dem i hvilken som helst rekkefølge de ønsker. Dette krever et ganske standard utvalg, selv om det igjen er to på tilbudet - 'NSArray' og 'NSMutableArray'. Forhåpentligvis kan du finne ut forskjellen.
I dette prosjektet bruker vi de mutable versjonene av begge disse klassene. Vi trenger mutable strenger fordi brukere må kunne redigere gjøremålsoppføringer, og den enkleste måten å gjøre det på er å la dem redigere oppføringene på plass. Vi trenger også et gjensidig array, ellers ville brukere ikke kunne legge til og fjerne elementer.
Så, la oss starte med arrayet: Vi skal bruke en veldig grunnleggende programmeringsteknikk i mål C som kalles 'egenskaper'. Syntaxen for disse er litt verbose, så jeg anbefaler at du forplikter alt til muskelminne så raskt som mulig.
Eiendommer
Våre gjøremålslister må lagres i en NSMutableArray, og den riktige måten å opprette at NSMutableArray er med en eiendom. Dette er en liten objektiv C-syntaktisk sukker som betyr "Når jeg prøver å få verdien, kjør denne metoden, men når jeg prøver å sette verdien, kjør denne metoden i stedet." Det handler om metodene, i motsetning til å sette verdier direkte.
Å måtte skrive to metoder for å få og sette hver verdi er tydelig en irritasjon, så mål C har spesiell syntaks som kan generere disse metodene for oss når koden er samlet. Hvis du noen gang velger å skrive din egen, må du bare fortelle det om å stoppe automatisk generering av metodene du vil bytte ut - enkelt.
Første ting først, vi må fortelle Objective C at vi vil ha en NSMutableArray for våre varer. I 'RootViewController.h' - definisjonsfilen for hovedtabellvisningen - endres definisjonen av klassen slik at den er som følger:
@interface RootViewController:
UITableViewController
NSMutableArray * elementer;
@property (nonatomic, behold)
NSMutableArray * elementer;
@slutt
Først ser det sannsynligvis ut som om vi erklærer "elementene" array to ganger, men det er en forskjell: den første erklæringen gjør variabelen slik at den kan brukes hvor som helst i klassen, men den andre erklæringen gjør det til en eiendom så at den kan brukes hvor som helst i vår kode.
I tillegg forteller søkeordet "behold" Objective C at hvis det genererer koden for oss, bør det sørge for at objektet blir i live til vi sier noe annet.
Jeg sier "hvis det genererer koden", fordi det fortsatt er å komme - skift til "RootViewController.m" -filen og sett denne koden umiddelbart under '@implementation RootViewController':
@synthesize elementer;
Det er den biten som gjør kodegenereringen skapt - med den ene linjen, mål C vil slå vår '@property' i to metoder, både gjør minnehåndtering for oss automatisk.
Det er et siste stykke, skjønt: ved bruk av "behold" holdes gjenstanden gjenstand levende til vi sier noe annet. Hvis du aldri sier noe annet, blir aldri dette minnet frigjort - selv om du ikke får tilgang til det lenger. Som et resultat bør du alltid frigjøre minne som du har beholdt, så bla til bunnen av filen 'RootViewController.m' og se etter 'dealloc'-metoden. Endre det for å lese som følger:
- (void) dealloc
[utgivelse av elementer];
[super dealloc];
Sende "utgivelses" -meldingen til et objekt - som er hva denne koden gjør - har effekt i dette eksempelet om å frigjøre minnet. Det er faktisk litt mer komplisert enn det, men det fungerer godt nok for nå.
Fylling av bordet
Nå som vi har opplyst et varemerke, kan vi lage noen elementer og vise dem i tabellen. Men først må vi lage elementene. Og nå, takket være den magtfulle magten i magasintelepatikken, kan jeg lese dine tanker: "Vent litt ... har vi ikke bare skrevet noen kode for å gjøre alt det?"
Vel, ikke helt. Vi skrev kode for å erklære variabelen slik at den er tilgjengelig for bruk - nå må vi bruke saken.
I nærheten av toppen av 'RootView Controller.m' har meldingen 'viewDidLoad' blitt kommentert. Fjern '/ *' og '* /' for å uncomment det, legg deretter til dette:
self.items = [NSMutableArray
arrayWithCapacity: 10];
Med det på plass, er vårt utvalg klar til bruk. Skann ned filen litt og se etter metoden "numberOfRowsInSection" - som bestemmer hvor mange rader som vises i tabellen i brukergrensesnittet vårt.
Hvor mange? Enkelt - så mange som vi har elementer i "elementer" -arrangementet. Akkurat nå har standardmetodeimplementasjonen 'return 0', som betyr '0 rader'; endre det for å returnere antall elementer i "elementer":
returnere [elementer telle];
Deretter må vi endre måten tabellruter opprettes på slik at de viser teksten til riktig gjøremålsliste. Som med de andre metodene inneholder Apples mal allerede kode for å gjøre det meste av dette arbeidet. Faktisk trenger du bare å legge til en linje som sier 'sett denne radens tekstetikett for å ha det som er i varenes array på den posisjonen'.
Omtrent halvveis ned 'RootViewController.m' -filen er metoden 'cellForRowAtIndexPath', og du bør kunne se at den mottar en parameter som heter 'indexPath' - som forteller oss hvilken rad vi må laste. Så, legg under dette direkte under kommentaren som leser "konfigurere cellen".
cell.textLabel.text = [self.items
objectAtIndex: indexPath.row];
Det bruker radens posisjon som passert i 'indexPath' for å se inn i 'items'-arrayet og tilordne den riktige teksten til tabellraden. Men hvis du kjører appen, gjør det fortsatt ingenting, selv etter all denne koden.
Heldigvis er det bare et spørsmål om at vi ikke har noen elementer i arrayet, så vi må legge til en knapp i navigasjonsfeltet øverst som lar brukerne legge til nye elementer.