- Objective-C és un llenguatge orientat a objectes creat com a extensió de C i usat durant dècades en el desenvolupament d'apps per a Apple.
- Destaca per la seva flexibilitat, barreja de codi C i orientació a objectes, compatibilitat amb APIs i frameworks antics i el sistema de missatgeria dinàmica.
- Conviu actualment amb Swift en projectes Apple i continua sent essencial per al manteniment i la interoperabilitat d'aplicacions i llibreries antigues.

Objective-C és un d'aquests llenguatges de programació que, encara que hagi quedat una mica eclipsat darrerament per l'auge de Swift, es manté com una eina vital a la història i al present de la programació per als sistemes d'Apple. Si heu sentit a parlar de la creació d'aplicacions per a iOS o macOS , segurament haureu topat amb aquest llenguatge, ja que durant més de dues dècades ha estat el pilar del desenvolupament a l'ecosistema d'Apple.
En aquest article, explorarem en profunditat tot el necessari per comprendre què és Objective-C , les seves característiques més peculiars, com va sorgir, on s'utilitza actualment i també com es compara amb altres alternatives com Swift. A més, veureu exemples pràctics per entendre la seva sintaxi, estructura i capacitats, així com els aspectes clau sobre la gestió de memòria, el paradigma d'orientació a objectes, els protocols i molt més. Prepara't perquè desgranarem fins a l'últim racó d'aquest fascinant llenguatge.
¿ Què és Objective-C?
Objective-C és un llenguatge de programació orientat a objectes que va ser dissenyat per ampliar el llenguatge C, dotant-lo de capacitats pròpies dels llenguatges basats en objectes, especialment inspirades en Smalltalk. El seu naixement es remunta a la dècada de 1980 gràcies a Brad Cox i la corporació StepStone, amb l'objectiu de dotar C d'un sistema de missatgeria a l'estil Smalltalk que permetés més flexibilitat i modularitat en la programació.
A diferència de C pur , Objective-C permet crear i manipular objectes, cosa que significa que pots estructurar el teu codi al voltant d'entitats que tenen tant dades com funcions associades. Això és especialment útil en el desenvolupament d'aplicacions complexes, ja que afavoreix l'organització, la reutilització i el manteniment del codi.
Un dels grans èxits d'Objective-C és que la seva sintaxi i funcionament permeten combinar codi escrit en C amb funcionalitats orientades a objectes , facilitant així la transició des de projectes ja existents a C i integrant noves característiques molt més avançades.
Història i evolució d'Objective-C
L'origen d'Objective-C se situa a la dècada dels 80, quan Brad Cox i Tom Love, desenvolupadors informàtics de StepStone, van detectar la necessitat d'afegir a C capacitats similars a les de Smalltalk, que era el gran referent en aquell moment quant a programació orientada a objectes. La intenció era fusionar la potència, velocitat i popularitat de C amb la flexibilitat de Smalltalk, creant així un llenguatge híbrid que oferís el millor dels dos mons.
La versió inicial va veure la llum el 1984 i, posteriorment, va ser adoptada per empreses com NeXT, la companyia fundada per Steve Jobs després de la sortida temporal d'Apple. NeXT va integrar Objective-C com a llenguatge principal del seu sistema operatiu NeXTSTEP, sentant les bases del que més tard es convertiria en macOS i iOS quan Apple va adquirir NeXT a finals dels 90.
Des d'aleshores, i durant gairebé trenta anys, Objective-C va ser l'estàndard indiscutible per desenvolupar programari en els sistemes operatius de la poma.
Actualment , encara que Swift acapara el desenvolupament de noves apps, Objective-C segueix sent imprescindible per a equips que treballen sobre bases de codi antigues, frameworks que no s'han adaptat a Swift, i com a pont per a certs projectes multiplataforma.
Per què es fa servir Objective-C?
Objective-C destaca especialment com el llenguatge de programació principal utilitzat per Apple per als sistemes operatius macOS i iOS, així com per als seus frameworks nadius més populars: Cocoa i Cocoa Touch. Des de la interfície gràfica d'un Mac fins a les aplicacions mòbils més complexes per a iPhone i iPad, Objective-C ha facilitat la creació de programari robust, eficient i fàcil de mantenir.
Un dels seus principals avantatges és que permet barrejar codi C i codi orientat a objectes , possibilitant la utilització de biblioteques de C en projectes moderns, cosa que resulta especialment útil en aplicacions que requereixen rendiment màxim o integració amb codi llegat.
Entre els usos més destacats de Objective-C es troben:
- Desenvolupament d'aplicacions natives per a iOS i macOS: Fins i tot avui dia, un bon nombre d'apps a l'App Store estan escrites, parcialment o totalment, a Objective-C.
- Accés a APIs antigues d'Apple: Moltes funcionalitats del sistema només estan disponibles en aquest llenguatge, cosa que el fa fonamental per mantenir i millorar projectes de llarga trajectòria.
- Frameworks i biblioteques pròpies: És habitual que grans equips de desenvolupament segueixin mantenint llibreries a Objective-C per eficiència i compatibilitat.
- Compatibilitat amb GNUstep i altres plataformes: A més d'Apple, altres implementacions com GNUstep permeten utilitzar Objective-C en sistemes no Apple.
Característiques principals d'Objective-C
Objective-C ofereix una sèrie de característiques molt valorades pels programadors, sobretot pels que provenen del món de C. A continuació, repassem les més importants per entendre que ho fa únic davant d'altres llenguatges:
- Llenguatge orientat a objectes: Tot gira al voltant dels objectes, permetent definir classes, herència, polimorfisme i encapsulament, així com la divisió clara del codi.
- Superconjunt de C: Preserva tota la funcionalitat de C, cosa que permet incloure conjunts d'instruccions tradicionals (com
while,for,do-while) i manipular dades primitives al costat dels objectes. - Missatgeria a l'estil Smalltalk: La invocació de mètodes es fa mitjançant l'enviament de missatges als objectes, aportant una gran flexibilitat i dinamisme al desenvolupament.
- Maneig de memòria explícit: A diferència de llenguatges moderns amb gestió de memòria automàtica, Objective-C requereix al programador controlar la creació i l'alliberament de cada objecte, encara que des del 2011 amb l'arribada d'ARC (Automatic Reference Counting) aquesta tasca ha estat notablement simplificada.
- Compatibilitat amb biblioteques C: Permet reutilitzar llibreries escrites a C, facilitant la integració de codi antic i l'augment del rendiment quan sigui necessari.
- Suport de protocols i categories: Podeu definir interfícies abstractes mitjançant protocols, i afegir mètodes addicionals a classes ja existents amb les categories.
Sintaxi i estructures bàsiques d'Objective-C
La sintaxi d'Objective-C és una de les seves principals senyes d'identitat i, encara que pot semblar estranya a simple vista (especialment la notació de claudàtors per a l'enviament de missatges), resulta força lògica i senzilla una vegada t'hi acostumes. Aquí tens un recorregut pels elements clau:
- Declaració de variables i tipus primitius: Igual que a C, pots declarar variables simples com
int,floatochar. Per a objectes, s'utilitza un asterisc abans del nom de la variable (MyClass *objeto;). - Enviament de missatges: Per trucar a un mètode d'un objecte, es fa servir la sintaxi de claudàtors:
; - Classes i mètodes: La definició d'una classe ocupa dos fitxers: el d'interfície (
.h) i el d'implementació (.m). S'utilitzen les directives@interfacey@implementation. - propietats: Es defineixen amb
@propertyi solen anar acompanyades de@synthesizeper implementar els mètodes getter i setter automàticament. - Control de flux: Les sentències clàssiques de C són presents:
if,else,switch,while,for. - Tipus de col·lecció: Hi ha objectes per a llistes (NSArray, NSMutableArray), diccionaris (NSDictionary, NSMutableDictionary) i conjunts (NSSet, NSMutableSet).
Aquest sistema permet que els desenvolupadors 'heretin' parteix de la lògica de C, però afegint una capa d'abstracció i modularitat molt valorada en projectes grans.
Exemple pràctic: Hola Món a Objective-C
Vegem com seria un exemple bàsic a Objective-C per imprimir “Hola Món” a la consola:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hola Mundo");
}
return 0;
}
En aquest fragment veiem diversos elements:
- #import : Importa el framework bàsic d'objectes d'Apple.
- @autoreleasepool: Necessari per al maneig de la memòria dels objectes, especialment quan no es fa servir ARC.
- NSLog: Funció per mostrar informació a la consola, equivalent a
printfen C però adaptada a Objetive-C.
Paradigma orientat a objectes a Objective-C
Objective-C adopta completament el paradigma de l'orientació a objectes , permetent treballar amb classes, objectes, herència, encapsulament i polimorfisme. Cada classe pot definir variables d'instància, mètodes propis i propietats i estendre's mitjançant subclasses per heretar i modificar comportaments.
A més, una característica única és la possibilitat d' enviar missatges dinàmicament als objectes, cosa que afavoreix el desenvolupament de programes molt flexibles i amb capacitat d'adaptació en temps d'execució, una idea heretada directament de Smalltalk.
També destaca la capacitat d'organitzar el codi mitjançant categories , que permeten afegir funcionalitat addicional a classes ja existents sense necessitat de crear subclasses, i els protocols que fan possible definir contractes de mètodes que les classes poden adoptar, similar a les interfícies en altres llenguatges.
Categories i extensions a Objective-C
Les categories són una de les eines més potents per estendre la funcionalitat d'una classe sense modificar-ne el codi original ni crear subclasses. Permeten afegir mètodes addicionals a qualsevol classe, fins i tot si no tens accés a la seva implementació, cosa que resulta extremadament útil per organitzar grans bases de codi o per implementar funcionalitats privades.
Per la seva banda, les extensions (o “class extensions”) serveixen per declarar mètodes i propietats privades dins de la pròpia implementació de la classe, permetent així més encapsulament i ocultació de detalls interns.
Protocols a Objective-C
Els protocols funcionen com a contractes abstractes que defineixen mètodes que les classes poden adoptar i implementar. Així, qualsevol classe pot indicar que adhereix a un protocol determinat i comprometre's a implementar els seus mètodes. Això aporta una gran flexibilitat i ajuda a complir patrons com la delegació, tan habituals en el desenvolupament d'apps per a iOS i macOS.
Per exemple, un protocol podria especificar mètodes com turnOnEngine o beNiceToSister:, i diferents classes podrien adoptar aquests protocols si els interessa aquesta funcionalitat.
Maneig de memòria: Retain, Release i ARC
A Objective-C, la gestió de memòria ha estat tradicionalment un dels reptes més grans per als programadors. Abans de l'aparició de l'ARC ( Automatic Reference Counting ), calia controlar manualment la retenció i l'alliberament de cada objecte, cosa que augmentava el risc de fuites (memory leaks) i errors difícils de detectar.
El cicle bàsic consisteix en:
- Crear l'objecte (
alloc). - Utilitzeu l'objecte.
- Alliberar l'objecte (
releaseoautorelease).
Amb ARC, que es va incorporar a Xcode 4.2 i iOS 4, el mateix compilador s'encarrega d'inserir automàticament les instruccions retain , release i autorelease , simplificant dràsticament la vida del desenvolupador i apropant Objective-C a l'experiència d'altres llenguatges amb recol·lecció d'escombraries.
Propietats i atributs: control daccés i memòria
Les propietats a Objective-C es declaren mitjançant @property i la seva gestió es reforça a través de diferents atributs, que controlen com s'emmagatzema i s'accedeix a cada valor. Els principals atributs són:
- assign: Assigna un valor directament, sense retenir ni alliberar l'objecte (usat generalment per a tipus primitius o referències febles).
- retain: Manté una referència forta a aquest objecte, incrementant el comptador cada vegada que s'assigna.
- còpia: Creeu una còpia de l'objecte assignat, útil en cadenes de text o objectes immutables.
- weak: Introduït amb ARC, defineix una referència feble que es posa automàticament a
nilquan l'objecte original és alliberat. - fort: Referència forta, assegura que mentre la propietat existeixi, l'objecte estarà disponible a la memòria.
Aquesta granularitat permet als desenvolupadors optimitzar el consum de recursos i evitar errors daccés a memòria.
Comparativa: Objective-C vs Swift
Des del 2014, el desenvolupament per a l'ecosistema d'Apple ha estat marcat per la convivència d' Objective-C i Swift . Ambdós llenguatges tenen punts forts i febles, i l'elecció depèn molt del tipus de projecte i de l'experiència de l'equip de desenvolupament.
Entre els avantatges principals d'Objective-C hi ha:
- Compatibilitat directa amb C i C++: Permet barrejar codi imperatiu i orientat a objectes, una cosa molt apreciada en aplicacions que requereixen rendiment brut.
- Maduresa i estabilitat: És un llenguatge provat durant anys, amb una gran comunitat i abundant documentació.
- Dinamisme: El vostre sistema de missatgeria i reflexió permet modificar el comportament de les aplicacions en temps d'execució.
Swift, per la seva banda, aporta:
- Majors garanties de seguretat: Gràcies al seu tipus estàtic, control d'errors i gestió moderna de memòria.
- Sintaxi més clara i concisa: Facilita l'escriptura i el manteniment del codi, especialment per als que no vénen del món de C.
- Eines modernes: Suport excel·lent per a espais de noms, desenvolupament interactiu amb Playgrounds, i patrons funcionals.
Amb vista al futur, tot apunta que Swift segueixi guanyant terreny, però Objective-C es mantindrà rellevant en grans projectes heretats i en la interoperabilitat amb frameworks antics.
Avantatges i desavantatges d'Objective-C davant de Swift
Convé repassar alguns punts clau que poden influir en l'elecció d'un llenguatge o un altre:
- Objectiu-C:
- Permet treballar eficientment amb biblioteques C i C++.
- Ofereix característiques dinàmiques, com ara el mètode swizzling, que permeten modificar comportament en temps d'execució.
- Compatible amb marcs binaris i llibreries de tercers ja existents.
- No obstant això, té un espai de noms reduït, cosa que pot derivar en conflictes en projectes grans i errors complicats de depurar.
- La sintaxi pot semblar complexa i antiquada per a nous programadors.
- Ràpid:
- Tipat estàtic i sintaxi moderna incrementen la seguretat i la productivitat.
- Suport avançat per a patrons funcionals i maneig interactiu de codi amb Playgrounds.
- Compilació més lenta en projectes grans i alguna inestabilitat en formats de mòduls o interoperabilitat amb C++.
Fonaments pràctics i exemples de codi
Per als qui entren per primera vegada a Objective-C, pot ser útil repassar alguns exemples pràctics del seu ús en projectes reals. Aquí us mostrem com serien algunes estructures i conceptes clau:
Declaració de classes i mètodes
// Archivo de cabecera: MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@property int contador;
- (void)incrementar;
@end
// Archivo de implementación: MyClass.m
#import "MyClass.h"
@implementation MyClass
- (void)incrementar {
self.contador++;
}
@end
En aquest exemple, MyClass hereta de NSObject , la classe arrel de la majoria dels objectes a Cocoa.
Ús d'arrays i diccionaris
NSArray *array = @;
NSString *elemento = array; // "dos"
NSDictionary *diccionario = @{ @"clave1": @"valor1", @"clave2": @"valor2" };
NSString *valor = diccionario; // "valor1"
Bucles i estructures de control
for (int i = 0; i < 5; i++) { NSLog(@"Iteración %d", i); } if (array.count > 2) {
NSLog(@"El array tiene más de dos elementos");
}
Maneig de memòria clàssic (sense ARC)
MyClass *objeto = init];
// Se usa el objeto
; // Liberar cuando termine de usarse
Compatibilitat i plataformes suportades
Tot i que Objective-C és inseparable de l'univers Apple, hi ha implementacions com GNUstep que permeten desenvolupar amb aquest llenguatge en altres plataformes, incloent Linux i Windows. Tot i això, el seu ús fora dels entorns macOS i iOS és molt minoritari i generalment lligat a projectes de nínxol oa la interoperabilitat amb codi antic. Què és Objective-C?
Dins d'Apple, Objective-C segueix sent compatible amb totes les versions modernes de macOS, iOS, iPadOS, tvOS i watchOS, sent una opció viable tant a Xcode com a eines de línia d'ordres.
Recursos i aprenentatge d'Objective-C
Per als que vulguin aprendre o perfeccionar els seus coneixements a Objective-C, hi ha una abundant quantitat de materials, tutorials i cursos en línia. Des de plataformes universitàries i escoles de formació tècnica fins a canals de vídeo i documentació oficial d'Apple, l'accés a l'aprenentatge és senzill i variat. Aprèn com convertir-te en un desenvolupador d'apps mòbils exitós.
Entre les opcions més habituals per formar-se destaquen:
- Vídeos explicatius.
- Llibres electrònics i manuals pràctics.
- Tutorials pas a pas, tant en text com en vídeo.
- Comunitats en línia de desenvolupadors i fòrums tècnics.
- Cursos en plataformes especialitzades que inclouen des de nivell bàsic fins a avançat.
A més, moltes d'aquestes plataformes ofereixen certificacions per als que completen els seus itineraris formatius, cosa que pot ser un plus a l'hora de buscar feina al sector.
Per què aprendre Objective-C avui dia?
Pot semblar que aprendre Objective-C actualment no té sentit, sobretot si el teu objectiu principal és embarcar-te en nous projectes. Tot i això, encara és molt recomanable dominar-lo si treballaràs en empreses amb bases de codi antic, en manteniment d'aplicacions que ja estan en producció, o si t'atrau el funcionament intern de les plataformes Apple. La compatibilitat d'Objective-C amb Swift permet que tots dos llenguatges convisquin en un mateix projecte, cosa que facilita la migració progressiva de les aplicacions sense necessitat de refer-ho tot des de zero.
A més, el fet que Objective-C segueixi sent una referència tècnica en molts aspectes del desenvolupament iOS i macOS garanteix la seva rellevància al mercat laboral, especialment per a perfils sènior i per a rols d'arquitectura o lideratge tècnic.
Al llarg d'aquest recorregut has pogut observar com el llenguatge Objective-C ha marcat un abans i un després en el desenvolupament de programari per a Apple, i com la seva filosofia, basada en l'extensió de C i la incorporació de paradigmes orientats a objectes, ha permès crear aplicacions robustes, flexibles i amb una enorme capacitat d'adaptació. Tot i que la popularitat de Swift ha desplaçat en part el seu ús, el domini d'Objective-C segueix sent una carta fonamental per a qualsevol desenvolupador que vulgui moure's amb soltesa a l'ecosistema d'Apple i enfrontar-se als reptes de la programació moderna i el manteniment de grans projectes. Ja sigui per motius de compatibilitat, arquitectures heretades o simplement per curiositat tècnica, aprendre Objective-C és obrir una porta a la història i al present de la informàtica de consum.
Índex
- 1 ¿ Què és Objective-C?
- 2 Història i evolució d'Objective-C
- 3 Per què es fa servir Objective-C?
- 4 Característiques principals d'Objective-C
- 5 Sintaxi i estructures bàsiques d'Objective-C
- 6 Exemple pràctic: Hola Món a Objective-C
- 7 Paradigma orientat a objectes a Objective-C
- 8 Categories i extensions a Objective-C
- 9 Protocols a Objective-C
- 10 Maneig de memòria: Retain, Release i ARC
- 11 Propietats i atributs: control daccés i memòria
- 12 Comparativa: Objective-C vs Swift
- 13 Avantatges i desavantatges d'Objective-C davant de Swift
- 14 Fonaments pràctics i exemples de codi
- 15 Compatibilitat i plataformes suportades
- 16 Recursos i aprenentatge d'Objective-C
- 17 Per què aprendre Objective-C avui dia?
