Objective-C es un lenguaje de programación orientado a objetos que añade mensajería al estilo Smalltalk al lenguaje de programación C. Fue el lenguaje de programación principal utilizado por Apple para el desarrollo de macOS e iOS hasta la introducción de Swift en 2014. Objective-C combina la eficiencia y el rendimiento de C con la flexibilidad y las capacidades dinámicas de Smalltalk, lo que lo hace muy adecuado para desarrollar aplicaciones en las plataformas de Apple. Su sintaxis y estructura permiten la creación de aplicaciones complejas mientras se mantiene la legibilidad y la facilidad de integración con otros lenguajes basados en C.
Objective-C fue creado a principios de la década de 1980 por Brad Cox y Tom Love en Stepstone, una empresa de software. La motivación detrás de su creación fue proporcionar un modelo de programación más flexible para los desarrolladores que construían software para el creciente paradigma orientado a objetos. El lenguaje se desarrolló aumentando C con capacidades de mensajería similares a Smalltalk, lo que permitió un enfoque más dinámico en la programación.
A finales de la década de 1980, NeXT Computer, fundada por Steve Jobs, adoptó Objective-C para su sistema operativo NeXTSTEP, que fue diseñado para facilitar el desarrollo de aplicaciones en un entorno de red. Esta decisión resultaría muy beneficiosa cuando Apple adquirió NeXT en 1997, lo que llevó a que Objective-C se convirtiera en la base para el desarrollo de macOS e iOS.
A pesar de la introducción de Swift en 2014, que fue diseñado para ser un reemplazo más seguro y moderno de Objective-C, este último sigue siendo una parte significativa del ecosistema de Apple. Muchas aplicaciones heredadas aún utilizan Objective-C, y se admite junto a Swift en los entornos de desarrollo actuales. El tiempo de ejecución dinámico de Objective-C y sus capacidades de mensajería continúan influyendo en el diseño de lenguajes y marcos más nuevos.
Objective-C es fundamentalmente orientado a objetos, lo que permite a los desarrolladores definir clases, objetos y métodos. Esto ayuda a organizar y modularizar el código de manera efectiva.
@interface MyClass : NSObject
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"¡Hola desde MyClass!");
}
@end
Objective-C permite el tipado dinámico, lo que habilita a las variables para contener objetos de diferentes clases en tiempo de ejecución, lo que es útil para patrones de codificación más flexibles.
id myObject = [[MyClass alloc] init];
En lugar de llamadas a funciones tradicionales, Objective-C utiliza una sintaxis de mensajería que se asemeja a Smalltalk, lo que permite una resolución de métodos más dinámica.
[myObject myMethod];
Las categorías permiten a los desarrolladores añadir métodos a clases existentes sin necesidad de subclases. Esto es particularmente útil para extender bibliotecas de terceros.
@interface NSString (MyCategory)
- (NSString *)reverseString;
@end
Los protocolos en Objective-C son similares a las interfaces en otros lenguajes, permitiendo la definición de métodos que pueden ser implementados por cualquier clase.
@protocol MyProtocol
- (void)requiredMethod;
@end
Objective-C proporciona una característica de propiedad que simplifica la encapsulación de variables de clase, manejando automáticamente los métodos getter y setter.
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end
El lenguaje emplea tanto el conteo de referencias manual (MRC) como el conteo de referencias automático (ARC) para gestionar la memoria de manera efectiva.
self.name = [[NSString alloc] initWithFormat:@"Hola"];
Objective-C soporta bloques, que son similares a las closures en otros lenguajes y permiten la definición y ejecución de funciones en línea.
void (^myBlock)(void) = ^{
NSLog(@"¡Hola desde Block!");
};
Objective-C proporciona construcciones sintácticas que ayudan en patrones de programación comunes, como la creación concisa de arreglos y literales de diccionarios.
NSArray *array = @[@"Uno", @"Dos", @"Tres"];
Objective-C emplea un sistema único de manejo de errores utilizando NSError
, que permite a los métodos devolver errores sin utilizar excepciones.
NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];
Xcode es el entorno de desarrollo integrado (IDE) principal para Objective-C, proporcionando un conjunto robusto de herramientas para el desarrollo, depuración y despliegue de aplicaciones en plataformas de Apple. Incluye un constructor de interfaces visual y documentación extensa.
El código Objective-C se compila típicamente utilizando el compilador Clang, que es parte del proyecto LLVM. Clang ofrece tiempos de compilación rápidos, excelentes diagnósticos de errores y soporta los últimos estándares de C y Objective-C.
Para construir un proyecto en Xcode, los desarrolladores crean un nuevo proyecto, configuran los ajustes de construcción y utilizan Interface Builder para diseñar componentes de UI visualmente. La construcción y ejecución de la aplicación se puede realizar directamente dentro de Xcode con un solo clic de botón.
Objective-C se utiliza principalmente para desarrollar aplicaciones para macOS e iOS. Es la columna vertebral de muchas aplicaciones heredadas y continúa utilizándose en combinación con Swift para aplicaciones modernas. Aplicaciones notables incluyen:
Cuando se compara con lenguajes de programación relevantes, Objective-C tiene sus fortalezas y debilidades únicas.
Para traducir Objective-C a otros lenguajes, considera lo siguiente:
Las herramientas existentes de traducción de código fuente a código fuente para Objective-C incluyen: