Vägen till din första iPhone app

Trots att jag programmerat mer eller mindre konstant sen 1982 (då jag fick min första hemdator, en ZX Spectrum 48k) så har jag aldrig lärt mig objektorientering ordentligt. Assembler, Basic och C kan jag som min egen innerficka. OpenGL? Inga problem. Linux, GTK, glibc, sed, awk, perl, shellscript? Inga problem. Men objektorientering?! Det är som en mystisk värld bortom lager på lager av fluff och pärlsocker. Trodde jag i alla fall, tills jag hittade Paul Hegartys utmärkta lektioner om ios 6.x programmering i Objective C.

paul

Paul Hegarty förklarar Vyer och Gester, Stanford CS193P, Winter 2013

Ska jag vara helt ärlig så har jag faktiskt gått ett par kurser i objektorientering på Mälardalens högskola under 1990-talet. Men det kändes bara tungrott och oanvändbart. Jag har så att säga aldrig använt det i praktiken. Det sköna med Paul Hegarty är att han förklarar det hela på ett roligt sätt och lyfter fram konkreta exempel där objektorientering faktiskt framstår som användbart. Inte bara i teorin.

Det här behöver du

  • iTunes – För att se föreläsningarna. Finns till OS X och Windows. Vissa versioner går att väcka till liv under wine i Linux. Det går också att titta utan iTunes, med Linuxprogrammet tunesviewer.
  • Kompilator – Xcode. Fungerar bara under OS X. Delar som inte kräver GUI (allt från Foundation/Foundation.h) går faktiskt att kompilera under Linux mha Gnustep. Det kräver antingen gcc med stöd för Objective C, minst gcc version 4.6. Eller llvm clang + libobjc2. Notera att alla features i ios 6.x inte fungerar med gcc 4.6. Exempelvis går det inte att utelämna nyckelordet @synthesize för properties i gcc, medan det går utmärkt att utelämna det i Xcode. Jag har inte heller fått ARC-nyckelorden strong och weak att fungera med gcc. Uppdatering: Strong och weak fungerar med clang + libobjc2 i Linux. Det fungerar även att utelämna @synthesize för properties. Jag planerar att skriva ett separat inlägg om detta.

Både iTunes och Xcode är gratis för OS X. Tyvärr kan du inte ladda ner dina program till telefonen utan ett developer-konto. Det kostar 99$ per år (och inkluderar även möjligheten att distribuera din app via app-store). Men Xcode har en inbyggd iPhone/iPad simulator. Förmodligen räcker det att använda den till att börja med. Vänta med att registrera ett dev-konto till du känner att du kodat fram en riktig killer-app.

Skriv något du själv vill ha

Ett tips när du försöker bestämma vilken typ av app du vill skriva: försök skapa en app som du själv skulle vilja använda. Sannolikheten är stor att det även finns andra i världen som också skulle vilja använda den. Försök inte ”hitta på” en app som du tror kommer sälja, det funkar sällan.

Ta god tid på dig

Stressa inte igenom videofilerna. Ta det i lugnt tempo och låt allting sjunka in. Se gärna om föreläsningarna. Det är bara 18 stycken. Hur många avsnitt av Game of Thrones eller Fringe har du inte tittat på sista tiden? Vad är några föreläsningar jämfört med det? Ta god tid på dig och se till att förstå koncepten ordentligt. Modellen ska t.ex. vara helt oberoende av det grafiska gränssnittet. Om du kan kompilera modellen under Linux och skriva ett CLI som kommunicerar med den, då har du lyckats. Sen är det bara att flytta över modellen till Xcode och lägga till Controllers/Views.

Finslipning

När appen funkar, slipa på detaljerna. Se till att du följer Apples guidelines. Det ökar chansen att få appen publicerad på app-store. Lägg till effekter, som animationer, och putsa på logiken, grafiken, musiken och ljudeffekterna. Tänk på användarupplevelsen. Testa om appen funkar på din mormor.

Lycka Till!

Exempel till Linux

För att kompilera ett Hello, World program behövs gcc, minst version 4.6 med stöd för objc, paketet gnustep-base och några mystiska flaggor. Först objc-programmet. Spara det som hello.m:

#import <Foundation/Foundation.h>

int main(void)
{
    NSLog(@"Hello, World!");

    return 0;
}

Och så flaggorna. För att få det rätt varje gång har jag lagt dem i en Makefil:

CC = gcc

WFLAGS = -W -Wall

OBJCFLAGS = $(shell gnustep-config --objc-flags) $(WFLAGS)
LIBS = $(shell gnustep-config --objc-libs) -lgnustep-base

hello: hello.o
$(CC) $(LDFLAGS) -o $@ hello.o $(LIBS)

Det är allt. Kan du kompilera programmet ovan kan du också använda hela Foundation i dina objc-program till Linux. Vill du gå vidare finns också GNUstep AppKit. Men jag vet inte hur kompatibelt AppKit är med Cocoa (som används i Xcode).

Advertisements

Om albertveli

Grävande programmerare.
Det här inlägget postades i Konst, Programmering. Bokmärk permalänken.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s