Objective-C est un langage de programmation orienté objet qui ajoute des capacités de messagerie de style Smalltalk au langage de programmation C. C'était le principal langage de programmation utilisé par Apple pour le développement de macOS et d'iOS jusqu'à l'introduction de Swift en 2014. Objective-C combine l'efficacité et la performance de C avec la flexibilité et les capacités dynamiques de Smalltalk, ce qui le rend bien adapté au développement d'applications sur les plateformes d'Apple. Sa syntaxe et sa structure permettent la création d'applications complexes tout en maintenant la lisibilité et la facilité d'intégration avec d'autres langages basés sur C.
Objective-C a été créé au début des années 1980 par Brad Cox et Tom Love chez Stepstone, une entreprise de logiciels. La motivation derrière sa création était de fournir un modèle de programmation plus flexible pour les développeurs construisant des logiciels pour le paradigme orienté objet en plein essor. Le langage a été développé en augmentant C avec des capacités de messagerie similaires à celles de Smalltalk, ce qui a permis une approche plus dynamique de la programmation.
À la fin des années 1980, NeXT Computer, fondée par Steve Jobs, a adopté Objective-C pour son système d'exploitation NeXTSTEP, conçu pour faciliter le développement d'applications dans un environnement de réseau. Cette décision a porté ses fruits lorsque Apple a acquis NeXT en 1997, ce qui a conduit Objective-C à devenir la base du développement de macOS et d'iOS.
Malgré l'introduction de Swift en 2014, qui a été conçu comme un remplacement plus sûr et plus moderne d'Objective-C, ce dernier reste une partie significative de l'écosystème d'Apple. De nombreuses applications héritées utilisent encore Objective-C, et il est pris en charge aux côtés de Swift dans les environnements de développement actuels. Le runtime dynamique d'Objective-C et ses capacités de messagerie continuent d'influencer la conception de nouveaux langages et frameworks.
Objective-C est fondamentalement orienté objet, permettant aux développeurs de définir des classes, des objets et des méthodes. Cela aide à organiser et à modulariser le code de manière efficace.
@interface MyClass : NSObject
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"Bonjour de MyClass !");
}
@end
Objective-C permet le typage dynamique, permettant aux variables de contenir des objets de différentes classes à l'exécution, ce qui est utile pour des modèles de codage plus flexibles.
id myObject = [[MyClass alloc] init];
Au lieu des appels de fonction traditionnels, Objective-C utilise une syntaxe de messagerie qui ressemble à Smalltalk, ce qui permet une résolution de méthode plus dynamique.
[myObject myMethod];
Les catégories permettent aux développeurs d'ajouter des méthodes à des classes existantes sans sous-classer. Cela est particulièrement utile pour étendre des bibliothèques tierces.
@interface NSString (MyCategory)
- (NSString *)reverseString;
@end
Les protocoles en Objective-C sont similaires aux interfaces dans d'autres langages, permettant la définition de méthodes qui peuvent être implémentées par n'importe quelle classe.
@protocol MyProtocol
- (void)requiredMethod;
@end
Objective-C fournit une fonctionnalité de propriété qui simplifie l'encapsulation des variables de classe, gérant automatiquement les méthodes getter et setter.
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end
Le langage utilise à la fois le comptage de références manuel (MRC) et le comptage de références automatique (ARC) pour gérer la mémoire de manière efficace.
self.name = [[NSString alloc] initWithFormat:@"Bonjour"];
Objective-C prend en charge les blocs, qui sont similaires aux closures dans d'autres langages et permettent la définition et l'exécution de fonctions en ligne.
void (^myBlock)(void) = ^{
NSLog(@"Bonjour de Block !");
};
Objective-C fournit des constructions syntaxiques qui aident dans les modèles de programmation courants, tels que la création concise de tableaux et les littéraux de dictionnaire.
NSArray *array = @[@"Un", @"Deux", @"Trois"];
Objective-C utilise un système de gestion des erreurs unique avec NSError
, qui permet aux méthodes de retourner des erreurs sans utiliser d'exceptions.
NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];
Xcode est l'environnement de développement intégré (IDE) principal pour Objective-C, fournissant un ensemble robuste d'outils pour le développement, le débogage et le déploiement d'applications sur les plateformes Apple. Il comprend un constructeur d'interface visuelle et une documentation extensive.
Le code Objective-C est généralement compilé à l'aide du compilateur Clang, qui fait partie du projet LLVM. Clang offre des temps de compilation rapides, d'excellentes diagnostics d'erreurs et prend en charge les dernières normes de C et d'Objective-C.
Pour construire un projet dans Xcode, les développeurs créent un nouveau projet, configurent les paramètres de construction et utilisent Interface Builder pour concevoir visuellement les composants de l'interface utilisateur. La construction et l'exécution de l'application peuvent être effectuées directement dans Xcode d'un simple clic de bouton.
Objective-C est principalement utilisé pour développer des applications pour macOS et iOS. Il est la colonne vertébrale de nombreuses applications héritées et continue d'être utilisé en combinaison avec Swift pour des applications modernes. Les applications notables incluent :
Comparé à des langages de programmation pertinents, Objective-C a ses forces et ses faiblesses uniques.
Pour traduire Objective-C vers d'autres langages, considérez les éléments suivants :
Les outils existants de traduction de code source à source pour Objective-C incluent :