iRepair

iPhone-udvikling #2: De første skridt

Trods mere end 15.000 programmer i App Store halter det fortsat med de danske af slagsen. Der findes selvfølgelig programmer lavet til danske forhold, men det kunne være meget bedre.

I den kommende tid vil iPhoneguide derfor sætte mere fokus på udviklingen af programmer til iPhonen, med det formål at få flere folk i gang med at udvikle danske programmer. Helt konkret sker det med en artikelserie der viser hvordan man kommer i gang med at udvikle. Artikelserien løber i foreløbig seks uger.

I sidste uge blev vi registeret som udvikler og fik hente udviklingsværktøjer og SDK. Nu skal vi igang med at lave vores første simple app, designe den grafiske grænseflade, skrive kode og afvikle vores program på iPhone Simulatoren.

Men først lidt teknik. Artikelserien hedder jo “iPhone udvikling”, så vi kommer ikke udenom programmeringen. Det at programmere, at kode, er ret omfattende, og du vil IKKE lære at programmere i denne artikel serie. Men selvom du aldrig har programmeret før, kan du sagtens følge med. Det kan godt gå hen og blive en hård omgang, men husk der at hjælp at hente ved at lægge en kommentar.

Objective-C og Cocoa

Når man skal programmere til iPhone eller mac benytter man som oftest et programmeringssprog der hedder Objective-C eller Obj-C. Det er et objekt-orienteret programmeringssprog, som Apple tog til sig i slutningen af 1980′erne. Det fleste dele af Mac OSX og iPhone OS er programmereret i Objective-C. Selve sproget er i virkeligheden ret simpelt, men kan sagtens volde problemer når man forsøger sig med det.

I et objekt orienteret sprog, snakker man om objekter og klasser. Disse begreber vil ikke blive diskuteret nærmere. Man skal blot vide at en “klasse” indeholder den kode vi skriver. Koden for en klasse ligger dels i en header fil (*.h) og en implementationsfil (*.m).

Når man programmerer har man som regel nogle eksisterende “klodser” man kan gøre brug af. Det vil sige nogle moduler, biblioteker, frameworks, kode mv. som man kan benytte i sin egen applikation. Til iPhone hedder frameworket Cocoa Touch og indeholder alt fra GUI elementer, GPS, ADT, Strenge osv.

Alt i alt giver Objective-C og Cocoa et rigtig godt fundament til ens applikationer.

På næste side går vi i gang med det første program.

Sider: 1 2 3 4 5

Skrevet af Martin, iPhoneguide.dk, 30/01 2009
Relaterede indlæg

Kommentarer
Subscribe to RSS
  • Patrick

     

    Yay… Glæder mig alleredetl næste uge :D

    Thumb up 0

    30. januar 2009 @ 08:25

  •  

    puha, det er en lang artikel. Håber ikke at I har planer i weekenden.

    Husk at smide en kommentar hvis I løber ind i nogle problemer…

    Thumb up 0

    30. januar 2009 @ 08:37

  •  

    Jeg har nu gennemgået det med positivt resultat, det tog ca. en halv time. Men jeg har læst den igennem 3-4 gange inden jeg gjorde det (i forbindelse med at jeg redigerede artiklen) og leget lidt med xcode inden da, så det kan godt være det tager lidt længere tid.

    Nu vil jeg så “lege” lidt og se hvad der sker “eller ikke sker”.

    Thumb up 0

    30. januar 2009 @ 09:14

  •  

    Jeg har nu tilføjet en ekstra “knap” der åbner politikkens hjemmeside:

    Jeg har lavet en ny metode, som jeg har kaldt “clicked2″ efter samme mønster som “clicked” blot med politiken.dk som URL. Nu vil jeg forsøge at finde ud af hvordan de forskellige events kan åbne URLen dvs. ændre “Touch up inside” til nogle af de andre ting.

    Jeg vil også opfordre andre til at komme med deres erfaringen, og så de negative. Vi kan jo være heldige at Mikkel forklarer os hvorfor det ikke virker, eller hvorfor det er en dårlig ide det vi gør.

    Thumb up 0

    30. januar 2009 @ 09:27

  •  

    Super lækker artikel serie…. Tog ikke lang tid at løbe den igennem og få den første app op og spille.

    Glæder mig til næste artikel i serien

    Thumb up 0

    30. januar 2009 @ 11:46

  •  

    @Mikkel

    Er det rigtigt forstået, at “clicked” og “clicked2″ som ovenfor i kommentaren udelukkende er et navn og derfor i princippet kunne være hvad som helst (sigende, så man kan huske det) eller er der noget jeg har misforstået?

    Thumb up 0

    30. januar 2009 @ 14:12

  •  

    Så mangler jeg bare en mac ):

    Thumb up 0

    30. januar 2009 @ 15:01

  •  

    Martin, de kan hedde hvad som helst…
    Glad for at I kan få det til at virke…

    Thumb up 0

    30. januar 2009 @ 16:04

  • LaWiPi

     

    Hey!
    Hvor er “næste side” når man læser den iPhone-formaterede udgave af siden?

    Thumb up 0

    30. januar 2009 @ 19:39

  •  

    @LaWiPi

    Så er det på plads. Tak for at gøre mig opmærksom på problemet.

    Thumb up 0

    30. januar 2009 @ 20:55

  • LaWiPi

     

    Det var da så lidt! kvaliteten af artiklen steg betydeligt, da de øvrige sider kom med.. :-)

    @Mikkel
    Det er sgu et godt initiativ, og vel udført!

    Thumb up 0

    30. januar 2009 @ 21:18

  • EmilC

     

    Rigtig god artikel.

    Tak til Mikkel fordi du gider, at dele din erfaring med os andre :-)

    Thumb up 0

    30. januar 2009 @ 22:55

  • NP

     

    Tak for en rigtig god artikel.

    Jeg har små problemer, og kan ikke finde ud af, hvad jeg gør forkert.
    Jeg har indtastet koden i .h og .m, og derefter når jeg højre klikker på knappen, kan jeg ikke få “clicked” frem, jeg kan kun vælge “Events” og “Referencing Outlets” i den mørke box.

    Thumb up 0

    10. februar 2009 @ 15:15

  • Emojet

     

    Har et lige et spørgsmål:

    Vil det være muligt at ændre en værdi i en boks ved at bruge metoden her? Altså clicked-metoden… Sådan så der står 9 når man har trykket en gang, på den knap man har lavet, hvorefter værdien fx bliver ændret til 12 når man trykker anden gang på den. Og hvordan gør man? Evt. kunne det indgå i næste artikel-serie?

    //Emil

    Thumb up 0

    12. februar 2009 @ 21:10

  •  

    @emojet

    Det kan man godt gøre – det er præcis det jeg har gjort i mit program, Det Periodiske System. Jeg har dog brugt en lidt anden metode:

    I IB laver jeg to knapper og en tekst-label.

    I .h-filen har jeg defineret dette – dvs. jeg bruger “sender” i stedet for “target”:

    @interface iPhone_dev_1AppDelegate : NSObject {
    IBOutlet UILabel *lblTal;
    }

    @property(nonatomic,retain) IBOutlet UILabel *lblTal;

    - (IBAction) knap1:(id) sender;
    - (IBAction) knap2:(id) sender;

    I .m-filen dette:

    @synthesize lblTal;

    - (IBAction) knap1:(id) sender {
    lblTal.text = @”9″;
    }

    - (IBAction) knap2:(id) sender {
    lblTal.text = @”12″;
    }

    I IB skal tingene så bare forbindes:
    - Tryk på den ene knap og vælg derefter “connection inspector”. Fra “touch down” laver du en forbindelse til “files owner” og vælger knap1
    - Fra den anden knap gør du det samme, men vælger knap2
    - Fra Files owner laver du en forbindelse til din label og vælger lblTal

    Det burde være det hele. Når du trykker på en af de to knapper sender de deres værdi til label. Du kan indføre flere knapper efter behov og også flere labels efter behov.
    Dette bare ideen, der er ikke sikkert du kan bruge koden direkte.

    Thumb up 0

    12. februar 2009 @ 22:07

  •  

    Mange tak for hurtigt svar Martin :) – Vil straks gå ind og prøve metoden… Men kan man også med en enkelt knap ændre værdien i labellen op til flere gange? Kun ved hjælp af en knap. D.v.s at labellen viser 1 første gang man trykker på knappen, hvorefter tallet i labellen bliver ændret til fx 2 næste gang man trykker på den samme knap?

    Mvh Emil

    Thumb up 0

    13. februar 2009 @ 07:36

  •  

    Givetvis, jeg ved bare ikke hvordan og har ikke selv haft brug for det endnu.

    Thumb up 0

    13. februar 2009 @ 09:14

  •  

    @NP, og du har gemt .h filen??

    Har du skrevet IBOutlet i din .h fil de rigtige steder??

    Hvids det ikke hjælper kan du sende mig din kode på mikkel@increment.dk, så kigger jeg på det??

    Thumb up 0

    13. februar 2009 @ 10:33

  • iSteff

     

    Når jeg går ind i interfacebuilder så får jeg dette frem : http://bayimg.com/image/manomaabj.jpg så når jeg prøver den af i simulatren med den indsatte knap så er hele skærmen en stor knap med afrundede hjørner i toppen :/

    Thumb up 0

    16. februar 2009 @ 20:33

  • Anders

     

    Hej, rigtig dejligt at se en artikel serie som denne – jeg har et problem med at få denne application til at lykkedes, og vil høre om nogle har haft samme problem, eller kunne give mig en løsning alligevel :) , anyways. Jeg har fulgt dine instrukser helt præcist (efter min overbevisning), mht. kode og det hele. Dog får jeg følgende fejl mht. mit delegate.m, når jeg forsøger at compile:

    error: “clicked” undeclared (first use in this function)
    error: “url” undeclared (first use in this function)

    Et andet spørgsmål jeg har, på mere generel plan er, ved andre blogs har jeg programmeret nogle begynder applications i “ViewController.m” og “ViewController.h”, hvorimod der i denne serie bliver skrevet kode i delegate.m og delegate.h. Hvad er forskellen?

    Tak :)
    Mvh. Anders

    Thumb up 0

    16. maj 2009 @ 18:04

  • Anders

     

    Nvm – har fundet en løsning på det : )

    Thumb up 0

    18. maj 2009 @ 11:16

  •  

    #21 godt du fik det løst

    ang #20 hvor man lægger sin kode handler lidt om stil og design. Det er svært at pege på nogen rigtig metode, men ofte let at udpege en forkert. ;-)

    Thumb up 0

    18. maj 2009 @ 12:00

  • Kuglepen

     

    hmm, er der nogen som kan give et lidt bedre forklaring hvor NSLog(@”Hello!”); skal placeres ? for der sker intet når jeg trykker build and go

    efter som jeg har forstået så skal den smides ind hvor // Override point for customization after application launch

    men er sikker på det er mig som har misforstået et eller andet..

    håber i kan hjælpe mig på rette vej..

    mvh Kuglepen

    Thumb up 0

    15. juni 2009 @ 20:39

  •  

    @Kuglepen

    Et eller andet må der ske. Får du en fejlmeldning eller hvad sker der?

    Thumb up 0

    15. juni 2009 @ 21:06

  • Kuglepen

     

    der sker intet, trykker build and go og så er det det

    Thumb up 0

    15. juni 2009 @ 21:19

  • Kuglepen

     

    hey, så virker det, havde bare ikke fået slettet disse 2 // ;S

    Thumb up 0

    15. juni 2009 @ 21:26

  •  

    Jeg får en error når jeg trykker “Build and Run”
    der står: “Code Sign error: The Identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychain”

    Ved ikke rigtig hvad jeg skal gøre :)

    Thumb up 0

    7. oktober 2009 @ 01:19

  • Surferen

     

    @Ulrik
    Jeg får samme fejl. Og det er lige meget om jeg starter et helt nyt projekt og arbejder i, samme fejl opstår.

    Fandt du ud af hvad man kunne gøre?

    Jeg har på fornemmelse at det er efter jeg har tilsluttede min Iphone til min mac, at den er begyndt med det.

    Thumb up 0

    2. marts 2010 @ 10:41

  •  

    @Ulrik og surferen

    I kan kun teste programmet på selve iPhonen, hvis i har et gyldigt udvikkler-certifikat og det hele er sat om som det skal. Uden det kan i kun teste i simulatoren, der ikke kræver signering af kode.

    Thumb up 0

    2. marts 2010 @ 10:44

  • Surferen

     

    Jeg fandt ud af det. :-D

    Det er fordi man kan vælge imellem simulator eller device, og hvis man ikke er godkendt udvikler, kan man ikke kører den på sin telefon.

    udemærket. Så kan jeg heldigvis komme videre :-D

    Thumb up 0

    2. marts 2010 @ 10:52

  • Surferen

     

    @Martin
    Tak for hjælpen. Det er nu sjovt at prøve at udvikle til Iphone og mac.

    Jeg har selv udviklet rigtig meget til Windows C#, og et rigtig fedt sprog med masser af muligheder. Så glæder mig til at arbejde med obj-c. og dejligt at der er en masse guides herinde til at hjælpe en:-D

    Thumb up 0

    2. marts 2010 @ 10:55

  • Carsten

     

    Er der nogle som har en løsning på iSteff´s spørgsmål?
    jeg har nemlig samme problem :-(

    Thumb up 0

    3. oktober 2010 @ 00:02

  • Carsten

     

    Så virker det :-)
    Jeg fik valgt View-based App i stedet for Window-based App… :-)

    Thumb up 0

    3. oktober 2010 @ 11:21

  • eske

     

    rigtig dejligt at se en artikel serie som denne –
    jeg har et problem med at få denne application til at lykkedes,
    og vil høre om nogle har haft samme problem,
    eller kunne give mig en løsning alligevel ,
    anyways. Jeg har fulgt dine instrukser helt
    præcist (efter min overbevisning), mht. kode og det hele.
    Dog får jeg følgende fejl

    error: “clicked” undeclared (first use in this function)
    error: “expected befor token

    Thumb up 0

    24. januar 2011 @ 14:00

  •  

    @eske

    Tjek lige din kode igen. Der mangler måske et kolon efter clicked et sted.

    Thumb up 0

    24. januar 2011 @ 14:31

  • Jacob

     

    Nogle der har lyst og evnerne til at udvikle en demo App til mig. Vi går og roder med lidt ideer, men skal bruge nogle der kan programmere.

    Thumb up 0

    8. februar 2011 @ 12:47

  • Niklafritz

     

    hej Martin fed guide!!!
    Hvordan får jeg applikationen ned på min iPhone? Og hvordan laver jeg en label så den ser godt ud når den ligger på min iPhone?

    Thumb up 0

    10. maj 2011 @ 12:49

Skriv en kommentar

For at kommentere skal du udfylde navn og mailadresse. Du kan også oprette en profil på siden. Du finder registreringsformen nederst i sidebaren i højre side (klik på "Opret").