I Objective-C särskiljer man på .h och .m filer. .h-filer innehåller gränssnitt till objekt, kallade interface. .m-filer innehåller implementationen av gränssnittet, kallad implementation. Det är precis enligt den gängse litteraturen! För en gångs skull! (Vanligare i programspråk är namnen ”klassdeklaration” eller ”typdeklaration” för .h-filens innehåll, och ”definition” för .m-filens innehåll)
Nåväl, jag ska exemplifiera dessa begrepp genom att visa ett minimalt objekt Simple. Simple innehåller bara ett meddelande ”Hello”, som inte tar några argument och inte heller returnerar något värde. Det enda Hello gör är att skriva ut ”Hello” med hjälp av printf.
Vi börjar med .m-filen, alltså implementationen:
@implementation Simple -(void)Hello { printf(@"Hello!"); } @end
Själva innehållet omsluts allstå av @implementation … @end. Objektnamnet följer direkt efter implementation, och sedan raddas meddelandeimplementationerna upp.
I vårat fall har vi bara meddelandet Hello. Hello returnerar inte något värde, därför skriver man -(void) före namnet. ‘void’ har alltså samma betydelse i ObjC som i vanlig C/C++. Minustecknet betecknar meddelandets början.
Därefter skrivs meddelandekroppen inom måsvingar, och vi skriver dit våran printf().
Vi vänder oss till .h-filen, som är något mer komplicerad.
@interface Simple : NSObject { } -(void)Hello; @end
Även i detta fall används snabela och två nyckelord för att omsluta informationen: @interface .. @end.
Notera att efter Simple står det kolon NSObject. Detta betyder att Simple baseras på objektet NSObjekt, vanligt objektorienterat arv alltså.
De ensamna måsvingarna därefter betyder inget i detta exempel; däri ska man lägga medlemsvariabler för objektet, men några sådana har inte Simple.
Sedan kommer Hello som skrivs väldigt likt .m filen och precis som i C/C++ avslutas raden med semikolon.
Taggar: programmering, objective-c
Nja, du förklarar en del saker men hoppar över andra.
”Även i detta fall används snabela och två nyckelord för att omsluta informationen: @interface .. @end.”
Du använder även snabela framför strängen @”Hello!”, och sen en viktig del är nog ändå att förklara vad minustecknet gör (medlemsmetod).
Lasse; Tack för info!
Jag gav upp mina Objective-C ambitioner förra sommaren då jag tyckte tröskeln var för hög att kliva uppför. Plus att jag var (och är) ovan Mac-användare så allt kändes onödigt tungjobbat.
Nu blir det mest Python för min del på fritiden 😉