Objective-C er et objektorienteret programmeringssprog, der tilføjer Smalltalk-lignende beskeder til C-programmeringssproget. Det var det primære programmeringssprog, der blev brugt af Apple til macOS- og iOS-udvikling indtil introduktionen af Swift i 2014. Objective-C kombinerer effektiviteten og ydeevnen fra C med fleksibiliteten og de dynamiske egenskaber fra Smalltalk, hvilket gør det velegnet til udvikling af applikationer på Apples platforme. Dets syntaks og struktur muliggør oprettelse af komplekse applikationer, samtidig med at læsbarheden og let integration med andre C-baserede sprog opretholdes.
Objective-C blev skabt i begyndelsen af 1980'erne af Brad Cox og Tom Love hos Stepstone, et softwarefirma. Motivation bag oprettelsen var at give en mere fleksibel programmeringsmodel for udviklere, der byggede software til den voksende objektorienterede paradigme. Sproget blev udviklet ved at udvide C med beskedkapaciteter, der ligner Smalltalk, hvilket tillod en mere dynamisk tilgang til programmering.
I slutningen af 1980'erne adopterede NeXT Computer, grundlagt af Steve Jobs, Objective-C til sit NeXTSTEP-operativsystem, som var designet til at lette udviklingen af applikationer i et netværksmiljø. Denne beslutning ville senere vise sig at være meget fordelagtig, da Apple erhvervede NeXT i 1997, hvilket førte til, at Objective-C blev fundamentet for macOS- og iOS-udvikling.
På trods af introduktionen af Swift i 2014, som blev designet til at være en sikrere og mere moderne erstatning for Objective-C, forbliver sidstnævnte en væsentlig del af Apples økosystem. Mange legacy-applikationer bruger stadig Objective-C, og det understøttes sammen med Swift i nuværende udviklingsmiljøer. Objective-C's dynamiske runtime og beskedkapaciteter fortsætter med at påvirke designet af nyere sprog og rammer.
Objective-C er fundamentalt objektorienteret, hvilket giver udviklere mulighed for at definere klasser, objekter og metoder. Dette hjælper med at organisere og modulere kode effektivt.
@interface MyClass : NSObject
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"Hej fra MyClass!");
}
@end
Objective-C tillader dynamisk typing, hvilket gør det muligt for variabler at holde objekter af forskellige klasser ved kørsel, hvilket er nyttigt for mere fleksible kode-mønstre.
id myObject = [[MyClass alloc] init];
I stedet for traditionelle funktionsopkald bruger Objective-C en besked-syntaks, der ligner Smalltalk, hvilket muliggør en mere dynamisk metodeopløsning.
[myObject myMethod];
Kategorier giver udviklere mulighed for at tilføje metoder til eksisterende klasser uden at oprette underklasser. Dette er særligt nyttigt til at udvide tredjepartsbiblioteker.
@interface NSString (MyCategory)
- (NSString *)reverseString;
@end
Protokoller i Objective-C ligner interfaces i andre sprog og giver mulighed for definition af metoder, der kan implementeres af enhver klasse.
@protocol MyProtocol
- (void)requiredMethod;
@end
Objective-C tilbyder en egenskabsfunktion, der forenkler indkapslingen af klassevariabler og håndterer getter- og setter-metoder automatisk.
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end
Sproget anvender både manuel referenceoptælling (MRC) og automatisk referenceoptælling (ARC) til effektiv hukommelsesstyring.
self.name = [[NSString alloc] initWithFormat:@"Hej"];
Objective-C understøtter blocks, som ligner closures i andre sprog og tillader inline funktionsdefinition og udførelse.
void (^myBlock)(void) = ^{
NSLog(@"Hej fra Block!");
};
Objective-C giver syntaktiske konstruktioner, der hjælper med almindelige programmeringsmønstre, såsom kortfattet array-oprettelse og ordbogs-litteraler.
NSArray *array = @[@"En", @"To", @"Tre"];
Objective-C anvender et unikt fejlhåndteringssystem ved hjælp af NSError
, som gør det muligt for metoder at returnere fejl uden at bruge undtagelser.
NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];
Xcode er det primære integrerede udviklingsmiljø (IDE) for Objective-C, der tilbyder et robust sæt værktøjer til udvikling, fejlfinding og implementering af applikationer på Apple-platforme. Det inkluderer en visuel interfacebygger og omfattende dokumentation.
Objective-C-kode kompileres typisk ved hjælp af Clang-kompileren, som er en del af LLVM-projektet. Clang tilbyder hurtige kompileringstider, fremragende fejldiagnostik og understøtter de nyeste standarder for C og Objective-C.
For at bygge et projekt i Xcode opretter udviklere et nyt projekt, konfigurerer byggeindstillinger og bruger Interface Builder til visuelt at designe UI-komponenter. Bygning og kørsel af applikationen kan gøres direkte i Xcode med et enkelt klik på en knap.
Objective-C bruges primært til at udvikle applikationer til macOS og iOS. Det er ryggraden i mange legacy-applikationer og fortsætter med at blive brugt i kombination med Swift til moderne applikationer. Bemærkelsesværdige applikationer inkluderer:
Når man sammenligner med relevante programmeringssprog, har Objective-C sine unikke styrker og svagheder.
For at oversætte Objective-C til andre sprog, overvej følgende:
Eksisterende kilde-til-kilde kodeoversættelsesværktøjer til Objective-C inkluderer: