Objective-C: Programspråk

Objective-C är en objektorienterad påbyggnad på vanliga C.

Det går därför att blanda C och Objective-C relativt obehindrat i samma källkod. Till skillnad mot till exempel C++ kan man skicka meddelanden på ett liknande sätt som i Smalltalk.

Idag används Objective-C framförallt i Apples Mac OS, iOS och GNUstep, två miljöer som baseras på OpenStep-standarden. Det är också det i huvudsak använda programmeringsspråket i NeXTSTEP, OPENSTEP och Cocoa-ramverket. Dessa bibliotek är inga krav för att skriva ett program i Objective-C, vilket visas i exempel nedan. Ett sådant program kan kompileras på alla operativsystem som har tillgång till gcc, som har en modul för Objective-C. Det gör man genom att vid kompilering tillföra flaggan -lobjc.

Syntax

Interface och implementation

En klass i Objective-C har en interface- och en implementation-del som är två skilda block av kod. Normalt placeras interface-delen i en header-fil, med filändelsen .h. Implementationsdelen i en kodfil, med filändelsen .m, men de kan lika gärna vara i samma fil och filändelsen kan variera.

Interfacedelen fungerar så här:

 @interface klass : superklass {      // instansvariabler  }  + klassMetod1;  + (retur_typ)klassMetod2;  + (retur_typ)klassMetod3:(param1_typ)param1_varNamn;   - (retur_typ)instansMetod1:(param1_typ)param1_varNamn: (param2_typ)param2_varNamn;  - (retur_typ)instansMetod2MedParamter: (param1_typ)param1_varNamn ochAnnanParameter:(param2_typ)param2_varNamn;  @end 

Implementationsdelen fungerar så här:

 @implementation klass  + (retur_typ)klassMetod {      // implementation  }    - (retur_typ)instansMetod {      // implementation  }  @end 

Meddelanden och metoder

I Objective-C skickar man till skillnad mot Simula-modellen meddelanden till objekten. I Objective-C anropar man inte metoder, man skickar meddelanden. Ett objekt vid namn mottagare kan ha en metod som heter metodnamn, den anropas i så fall på följande sätt:

 [mottagare metodnamn]; 

Ett meddelande kan skickas till ett objekt även om objektet inte kan svara på det. Det möjliggör bland annat för mottagaren att skicka meddelandet vidare i en kedja, t.ex. en länkad lista till dess det kommer fram till någon som kan svara på det.

Man kan även skicka med argument i ett meddelande. Om metoden metodnamn även kan ta emot ett objekt av typen id kan det se ut så här:

 id enId = [[Klass alloc] init];  [mottagare metodnamn: enId]; 

Då skulle motsvarande metodsignatur kunna se ut så här:

 - (void)metodnamn:(id)objekt; 

Som man kan se i metodsignaturen skrivs objektets typ inom parenteser. Det inledande void betyder vad för typ av objekt metoden skickar tillbaka. I det här fallet är det void vilket betyder att inget returneras.

Man kan skicka flera argument. Lägger vi till ett argument av typen int kan det se ut så här:

 id enId = [[Klass alloc] init];  int enInt = 7;  [mottagare metodnamn:enId medInt:enInt]; 

Då skulle motsvarande metodsignatur kunna se ut så här:

 - (void)metodnamn:(id)objekt medInt:(int)enInt; 

Exempel

Ett exempel på ett program som skriver ut texten "hello, World!".

 /* Kompilera med t ex: gcc hello.m -lobjc -o hello */   #import   #import     @interface MyClass : Object {  }  - (void)world;  @end    @implementation MyClass  - (void)world {      printf("hello, World!\n");  }  @end    int main() {      id hello = [[MyClass alloc] init];      [hello world];      return 0;  } 

Se även

Externa länkar

Tags:

Objective-C SyntaxObjective-C ExempelObjective-C Se ävenObjective-C Externa länkarObjective-CC (programspråk)C++ObjektorienteringSmalltalk

🔥 Trending searches on Wiki Svenska:

Sveriges länJens HulténTony OlssonRonja Rövardotter (TV-serie, 2024)Schrödingers kattLucas BergvallEbba Hultkvist StragneLionel MessiVipeholmsexperimentenBergfinkJohan Falk (filmer)Pernilla WahlgrenMarockoDrottning KristinaEdvard PerssonGeorgienNiklas StrömstedtMartin Luther KingInstagramBrynäs IFJönssonliganChris HärenstamÖver AtlantenSydamerikaMoulin RougeLista över Sveriges kommunerMjälteSverigedemokraternaKristallnattenDalarnaCivil War (film)RednexRipley (TV-serie)I dina händerEmma GreenCarl-Eric BjörkegrenDiskoteksbranden i GöteborgSmå AntillernaDanmarkSebastian NanasiAlma EklundMalmö FFKim BergstrandOrtnamn i BohuslänLuxemburgWikipediaNordamerikaSpotifyVänsterpartietTempo (musik)Lista över bilmärkenMicael DahlenKattJapanTogoFredrik EklundMy RohwedderKarl XIMalin Baryard-JohnssonMax LindholmBenjamin IngrossoFentanylLettlandKap VerdeOkapiNapoleon ITed BundyMaria StuartGenerationKanadagåsSimon RyforsÖrebroFoxtrot (kriminellt nätverk)Kattis AhlströmGotland-klassLista över städer i NederländernaEtiopienOsmanska riketStefan Löfven🡆 More