Objective-C is een objectgeoriënteerde programmeertaal die Smalltalk-achtige messaging toevoegt aan de C-programmeertaal. Het was de primaire programmeertaal die door Apple werd gebruikt voor de ontwikkeling van macOS en iOS tot de introductie van Swift in 2014. Objective-C combineert de efficiëntie en prestaties van C met de flexibiliteit en dynamische mogelijkheden van Smalltalk, waardoor het goed geschikt is voor het ontwikkelen van applicaties op de platforms van Apple. De syntaxis en structuur maken het mogelijk om complexe applicaties te creëren, terwijl de leesbaarheid en de eenvoud van integratie met andere op C gebaseerde talen behouden blijven.
Objective-C werd in de vroege jaren '80 gecreëerd door Brad Cox en Tom Love bij Stepstone, een softwarebedrijf. De motivatie achter de creatie was om een flexibeler programmeermodel te bieden voor ontwikkelaars die software bouwden voor het opkomende objectgeoriënteerde paradigma. De taal werd ontwikkeld door C uit te breiden met messaging-capaciteiten die vergelijkbaar zijn met Smalltalk, wat een dynamischer benadering van programmeren mogelijk maakte.
In de late jaren '80 adopteerde NeXT Computer, opgericht door Steve Jobs, Objective-C voor zijn NeXTSTEP-besturingssysteem, dat was ontworpen om de ontwikkeling van applicaties in een netwerkomgeving te vergemakkelijken. Deze beslissing zou later enorm renderen toen Apple NeXT in 1997 verwierf, wat leidde tot Objective-C als de basis voor de ontwikkeling van macOS en iOS.
Ondanks de introductie van Swift in 2014, dat was ontworpen als een veiliger en moderner alternatief voor Objective-C, blijft laatstgenoemde een belangrijk onderdeel van het ecosysteem van Apple. Veel legacy-applicaties gebruiken nog steeds Objective-C, en het wordt naast Swift ondersteund in huidige ontwikkelomgevingen. De dynamische runtime en messaging-capaciteiten van Objective-C blijven de vormgeving van nieuwere talen en frameworks beïnvloeden.
Objective-C is fundamenteel objectgeoriënteerd, waardoor ontwikkelaars klassen, objecten en methoden kunnen definiëren. Dit helpt om code effectief te organiseren en te modulariseren.
@interface MyClass : NSObject
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"Hallo van MyClass!");
}
@end
Objective-C staat dynamische typing toe, waardoor variabelen objecten van verschillende klassen tijdens runtime kunnen bevatten, wat nuttig is voor flexibelere coderingspatronen.
id myObject = [[MyClass alloc] init];
In plaats van traditionele functieaanroepen, gebruikt Objective-C een messaging-syntaxis die lijkt op Smalltalk, wat een dynamischere methode-resolutie mogelijk maakt.
[myObject myMethod];
Categorieën stellen ontwikkelaars in staat om methoden toe te voegen aan bestaande klassen zonder subclassing. Dit is bijzonder nuttig voor het uitbreiden van derde-partij bibliotheken.
@interface NSString (MyCategory)
- (NSString *)reverseString;
@end
Protocollen in Objective-C zijn vergelijkbaar met interfaces in andere talen, waardoor de definitie van methoden mogelijk is die door elke klasse kunnen worden geïmplementeerd.
@protocol MyProtocol
- (void)requiredMethod;
@end
Objective-C biedt een eigenschap functie die de encapsulatie van klassevariabelen vereenvoudigt, waarbij getter- en setter-methoden automatisch worden afgehandeld.
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end
De taal maakt gebruik van zowel handmatige referentietelling (MRC) als Automatische Referentietelling (ARC) om geheugen effectief te beheren.
self.name = [[NSString alloc] initWithFormat:@"Hallo"];
Objective-C ondersteunt blokken, die vergelijkbaar zijn met closures in andere talen en inline functie-definitie en uitvoering mogelijk maken.
void (^myBlock)(void) = ^{
NSLog(@"Hallo van Block!");
};
Objective-C biedt syntactische constructies die helpen bij veelvoorkomende programmeerpatronen, zoals beknopte array-creatie en woordenboekliteral.
NSArray *array = @[@"Een", @"Twee", @"Drie"];
Objective-C maakt gebruik van een uniek foutafhandelingssysteem met NSError
, waarmee methoden fouten kunnen retourneren zonder gebruik te maken van uitzonderingen.
NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];
Xcode is de primaire Integrated Development Environment (IDE) voor Objective-C, die een robuuste set tools biedt voor de ontwikkeling, debugging en implementatie van applicaties op Apple-platforms. Het bevat een visuele interfacebouwer en uitgebreide documentatie.
Objective-C-code wordt doorgaans gecompileerd met de Clang-compiler, die deel uitmaakt van het LLVM-project. Clang biedt snelle compilatietijden, uitstekende foutdiagnostiek en ondersteunt de nieuwste standaarden van C en Objective-C.
Om een project in Xcode te bouwen, creëren ontwikkelaars een nieuw project, configureren ze de build-instellingen en gebruiken ze Interface Builder om UI-componenten visueel te ontwerpen. Het bouwen en uitvoeren van de applicatie kan direct binnen Xcode met één druk op de knop worden gedaan.
Objective-C wordt voornamelijk gebruikt voor het ontwikkelen van applicaties voor macOS en iOS. Het is de ruggengraat van veel legacy-applicaties en blijft worden gebruikt in combinatie met Swift voor moderne applicaties. Opmerkelijke toepassingen zijn onder andere:
Wanneer Objective-C wordt vergeleken met relevante programmeertalen, heeft het zijn unieke sterke en zwakke punten.
Voor het vertalen van Objective-C naar andere talen, overweeg het volgende:
Bestaande bron-naar-bron codevertalingstools voor Objective-C zijn onder andere: