Hoe een iPhone-app te bouwen
NieuwsOntwikkelen voor de iOS App Store is een goed idee. Als ik zei dat een miezerige investering van £ 250 voldoende was om een markt van 150 miljoen consumenten te openen, zouden de oren van elke slimme ontwikkelaar moeten prikken.
Als ik zou toevoegen dat veel van die consumenten Apple-fans zijn die graag hun geld willen afstaan in een poging om software te kopen die de kosten van hun hardware rechtvaardigt, dan begin je misschien te begrijpen waarom er nu 300.000 iPhone-apps en 60.000 iPad-apps zijn twee en een half jaar na de lancering van de App Store.
De omvang van de App Store is enorm, met meer dan twee keer zoveel apps beschikbaar als alle concurrerende winkels samen.
In dit artikel wil ik je helpen met het starten van je eigen ontwikkeling in de App Store, en ik hoop dat het bemoedigend voor je is dat ikzelf van het hebben van nul apps naar 20 goedgekeurde en in de handel zijnde iets meer dan anderhalf jaar ging . Ik heb niet genoeg geld van hen gemaakt om met pensioen te gaan, maar ze bieden wel een normaal inkomen - en het is een inkomen dat alleen maar zal groeien als Apple meer hardware verkoopt.
Het enige dat u nodig hebt om deel te nemen, is een idee, een Mac (voor codering) en deze zelfstudie. Laten we gaan!
Vereisten
Om software te maken voor iOS-apparaten - dat is iPads, iPhones en iPod Touches - hebt u slechts één softwarepakket nodig: de iOS SDK van Apple.
Dit bestaat uit vier belangrijke componenten: de ontwikkelingsomgeving van Xcode, waarin u al uw code zult schrijven; Interface Builder, een ontwerpsysteem voor slepen en neerzetten van gebruikersinterfaces; bibliotheken en header-bestanden voor het schrijven van uw code in Objective C (de moedertaal van de iPhone); en de iOS Simulator, waarmee u een virtuele iPhone of iPad op uw Mac kunt uitvoeren.
Ik wil benadrukken dat dit alleen op je Mac kan worden gedaan, omdat de iOS SDK niet beschikbaar is voor een ander platform. In feite ben je vrijwel beperkt tot het gebruik van de hardware, software en ontwikkeltools van Apple. Dit is waarom veel mensen iOS-ontwikkeling noemen als een 'ommuurde tuin' - Apple is erg beschermend over wie apps maakt en wat de winkel binnengaat.
De Mac-vereisten zijn een horde waar je niet echt overheen kunt springen, maar ik zal dit wel zeggen: zelfs als je toegewijd bent aan Windows of Linux, is een Mac een uitstekende aankoop. We zien zelden meer solide of betrouwbare pc's.
SIMULATOR: U kunt uw app testen op uw bureaublad met behulp van een simulator - dit zou u geld besparen op een iOS-apparaat om te testen
Hoe dan ook, als u van plan bent om alleen in de simulator te werken, hoeft u Apple geen geld te betalen voor een testapparaat of een ontwikkelaarsaccount - u kunt direct naar http://developer.apple.com/ios gaan en toegang krijgen om de gratis tools.
Als je later besluit dat je een app hebt gebouwd die je wilt verkopen, moet je een iPod Touch nemen voor testdoeleinden (£ 180) en je vervolgens aanmelden voor een commercieel iOS-account (£ 60). Als je 59p-app slechts 500 exemplaren verkoopt - als slechts 0,00033 procent van de iOS-eigenaren het koopt - heb je je geld terugverdiend en al het andere is winst.
Nadat u uw account heeft gemaakt, moet u de nieuwste SDK downloaden. Op het moment van schrijven is dat Xcode 3.2.5 met iOS SDK 4.2. Dit pakket bevat alles wat je nodig hebt om iPhone- en iPad-apps te maken.
Het installatieprogramma is heel eenvoudig: klik gewoon op 'Volgende' totdat het kopieerproces start, geef het dan ongeveer 30 minuten om zijn magie uit te voeren en je bent klaar om aan de slag te gaan.
Bouw je project
Ik ben niet geïnteresseerd in het lesgeven van je theorie hier - ik wil je laten zien hoe je een echt project kunt maken, zodat je het, als je dat wilt, kunt uitbreiden met je eigen aanpassingen en je eigen waardevolle toevoeging aan de App Store kunt maken.
We gaan een eenvoudige takenlijstmanager maken, voortbouwend op enkele elementaire gebruikersinterface-elementen die veel voorkomen in iOS-apps.
Allereerst, start Xcode op - je zou het in de 'Developer' moeten vinden Map van toepassingen op uw harde schijf. Een welkomstscherm zou moeten verschijnen, maar u kunt dat sluiten en kiezen voor 'Nieuw | Nieuw project 'vanuit het menu.
Apple omvat zeven toepassingssjablonen uit de doos, maar degene die het meest nuttig is om mee te beginnen (voornamelijk omdat het een behoorlijk aantal voor u geschreven codes bevat) is de op navigatie gebaseerde toepassing. Kies dat, noem het 'TaDaList' en sla het op op je bureaublad.
Een op navigatie gebaseerde app geeft je een gebruikersinterface vergelijkbaar met de app Instellingen. Je krijgt een titelbalk bovenaan en een tabel met opties om uit te kiezen. Als u een optie kiest, wordt rechts van rechts een nieuw scherm weergegeven. U kunt dan teruggaan naar het vorige scherm door op een 'Vorige' knop te tikken - het is allemaal erg intuïtief en gemakkelijk te leren.
U kunt de basistoepassingssjabloon zien die Apple voor u heeft gemaakt door op [Command] + [Y] te drukken om uw app in de simulator te bouwen en uit te voeren. Je ziet de Apple blauwe balk bovenaan (het is leeg omdat we er nog niets in hebben getypt), plus de tabel met informatie (opnieuw leeg omdat we de app niet hebben verteld wat daar naartoe moet gaan).
Definieer items
X-CODE: Xcode is je primaire ontwikkelomgeving voor de iPhone. Sommige mensen vinden het leuk, de meeste niet
Voordat we taken uit de takenlijst in de tabel typen, moeten we definiëren wat die items zijn en waar ze zijn opgeslagen.
Denk eerst na over wat we nodig hebben om elk actielijstitem op te slaan als, en hoe ze nuttig als een groep kunnen worden opgeslagen. U moet deze twee belangrijkste punten bedenken: ten eerste is een item voor een takenlijst, zoals 'Feed the cat' of 'Take over the world', slechts een tekenreeks.
In Objective C zijn er twee soorten string: 'NSString' en 'NSMutableString'. Het enige verschil tussen de twee is dat de laatste kan worden gewijzigd nadat deze is gemaakt.
Ten tweede is de verzameling items heel eenvoudig: als ze worden toegevoegd, moeten we ze aan het begin of het einde van onze bestaande lijst plaatsen. Gebruikers moeten ze in elke gewenste volgorde kunnen lezen. Dit vraagt om een vrij standaard array, hoewel er wederom twee in de aanbieding zijn: 'NSArray' en 'NSMutableArray'. Hopelijk kun je het verschil ontdekken.
In dit project gebruiken we de veranderbare versies van beide klassen. We hebben veranderlijke strings nodig omdat gebruikers to-do-items moeten kunnen bewerken en de eenvoudigste manier om dat te doen is door ze de ingevoerde items te laten bewerken. We hebben ook een mutable array nodig, anders kunnen gebruikers geen items toevoegen en verwijderen.
Dus laten we beginnen met de array: we gaan een heel eenvoudige programmeertechniek gebruiken in Objective C, genaamd 'eigenschappen'. De syntaxis hiervoor is een beetje uitgebreid, dus ik raad aan dat je het zo snel mogelijk toewijst aan het spiergeheugen.
eigenschappen
Onze takenlijstitems moeten worden opgeslagen in een NSMutableArray en de juiste manier om die NSMutableArray te maken, is met een eigenschap. Dit is een klein beetje objectieve C-syntactische suiker, wat betekent 'Als ik de waarde probeer te krijgen, voer ik deze methode uit, maar als ik de waarde probeer in te stellen, voer dan deze methode uit.' Het gaat allemaal om de methoden, in tegenstelling tot het direct instellen van waarden.
Het schrijven van twee methoden om elke waarde te krijgen en in te stellen is duidelijk een ergernis, dus Objective C heeft een speciale syntaxis die deze methoden voor ons kan genereren wanneer de code wordt gecompileerd. Als u er ooit voor kiest om uw eigen te schrijven, vertel het dan gewoon om te stoppen met het automatisch genereren van de methoden die u wilt vervangen - eenvoudig.
Om te beginnen moeten we Objective C laten weten dat we een NSMutableArray voor onze items willen. In 'RootViewController.h' - het definitiebestand voor onze hoofdtabelweergave - wijzigt u de definitie van de klasse als volgt:
@ interface RootViewController:
UITableViewController
NSMutableArray * items;
@property (nonatomic, retain)
NSMutableArray * items;
@einde
In eerste instantie lijkt het erop dat we de array 'items' twee keer declareren, maar er is een verschil: de eerste declaratie maakt de variabele zodat deze overal in de klas kan worden gebruikt, maar de tweede verklaring verandert deze in een property dat het overal in onze code kan worden gebruikt.
Wat meer is, het trefwoord 'behouden' vertelt Objective C dat als het de code voor ons genereert, deze ervoor moet zorgen dat het object in leven blijft totdat we iets anders zeggen.
Ik zeg "als het de code genereert", want dat moet nog komen - verander naar het 'RootViewController.m' bestand en plaats deze regel code direct onder '@implementation RootViewController':
@synthetiseer items;
Dat is het bit dat de codegeneratie tot stand brengt - met die ene regel, zal Objective C onze '@property' in twee methoden veranderen, beide doen we geheugenbeheer voor ons automatisch.
Er is echter nog een laatste punt: met 'behouden' blijft het object 'items' behouden totdat we iets anders zeggen. Als je nooit anders zegt, wordt dat geheugen nooit vrijgegeven - zelfs als je er geen toegang meer toe hebt. Als gevolg hiervan moet u altijd geheugen vrijmaken dat u hebt behouden, dus scrol naar de onderkant van het bestand 'RootViewController.m' en zoek naar de 'dealloc'-methode. Wijzig het als volgt:
- (void) dealloc
[items vrijgeven];
[super dealloc];
Het bericht 'release' naar een object verzenden, wat deze code doet, heeft in dit voorbeeld het effect dat het geheugen wordt vrijgegeven. Het is eigenlijk een beetje ingewikkelder dan dat, maar het werkt nu goed genoeg.
De tafel vullen
Nu we een array items hebben gedeclareerd, kunnen we sommige items maken en deze in de tabel weergeven. Maar eerst moeten we de array items maken. En nu, dankzij de geweldige kracht van telepathie van tijdschriften, kan ik je gedachten lezen: "Wacht even ... hebben we niet gewoon een code geschreven om dat allemaal te doen?"
Nou ja, niet helemaal. We hebben de code geschreven om de variabele te declareren zodat deze beschikbaar is voor gebruik - nu moeten we het ding gebruiken.
Boven aan 'RootView Controller.m' is het bericht 'viewDidLoad' becommentarieerd. Verwijder de '/ *' en '* /' om het commentaar weg te halen en voeg dit toe:
self.items = [NSMutableArray
arrayWithCapacity: 10];
Met dat op zijn plaats, is onze array klaar om gebruikt te worden. Scan het bestand een beetje en kijk naar de 'numberOfRowsInSection'-methode - die bepaalt hoeveel rijen in de tabel in onze gebruikersinterface verschijnen.
Hoeveel? Eenvoudig - zoveel als we items in de array 'items' hebben. Op dit moment heeft de standaardmethode-implementatie 'return 0', wat '0 rijen' betekent; verander dat om het aantal items in 'items' terug te sturen:
terugkeer [aantal items];
Vervolgens moeten we de manier wijzigen waarop tabelrijen worden gemaakt, zodat ze de tekst van het juiste takenlijstitem weergeven. Net als bij de andere methoden, bevat de sjabloon van Apple al code om het meeste van dit werk te doen - in feite hoeft u slechts één regel toe te voegen die zegt 'zet het tekstlabel van deze rij om alles in onze itemsreeks op die positie te hebben'.
Ongeveer halverwege het 'RootViewController.m' bestand is de 'cellForRowAtIndexPath' methode, en je zou in staat moeten zijn om te zien dat het een parameter genaamd 'indexPath' ontvangt - die ons vertelt welke rij we moeten laden. Dus, direct onder de opmerking met de tekst 'de cel configureren', voeg je dit toe:
cell.textLabel.text = [self.items
objectAtIndex: indexPath.row];
Dat gebruikt de positie van de rij zoals aangegeven in 'indexpad' om in de array 'items' te kijken en de juiste tekst toe te wijzen aan de tabelrij. Als u de app echter uitvoert, doet deze nog steeds niets, zelfs niet na al deze code.
Gelukkig is het gewoon een kwestie van dat we geen items in de array hebben. Daarom moeten we een knop toevoegen aan de navigatiebalk bovenaan, zodat gebruikers nieuwe items kunnen toevoegen.