- Objective-C je objektno usmerjen jezik, ustvarjen kot razširitev jezika C in se že desetletja uporablja pri razvoju aplikacij za Apple.
- Izstopa po svoji prilagodljivosti, kombinaciji kode C in objektne usmerjenosti, združljivosti s starejšimi API-ji in ogrodji ter dinamičnem sistemu sporočanja.
- Trenutno obstaja skupaj s Swiftom v Apple projektih in ostaja bistvenega pomena za vzdrževanje in interoperabilnost starejših aplikacij in knjižnic.

Objective-C je eden tistih programskih jezikov, ki je, čeprav ga je v zadnjem času nekoliko zasenčil vzpon Swifta, ostaja ključno orodje v zgodovini in sedanjosti programiranja za Apple sisteme. Če ste že slišali za ustvarjanje aplikacij za iOS ali macOS , ste skoraj zagotovo že naleteli na ta jezik, saj je že več kot dve desetletji temelj razvoja v Apple ekosistemu.
V tem članku bomo raziskali vse, kar morate vedeti za razumevanje jezika Objective-C : njegove najbolj značilne značilnosti, izvor, trenutno uporabo in primerjavo z alternativami, kot je Swift. Videli boste tudi praktične primere, ki vam bodo pomagali razumeti njegovo sintakso, strukturo in zmogljivosti, pa tudi ključne vidike upravljanja pomnilnika, objektno usmerjeno paradigmo, protokole in še veliko več. Pripravite se, saj se bomo poglobili v vsak kotiček tega fascinantnega jezika.
Kaj je Objective-C?
Objective-C je objektno usmerjen programski jezik, zasnovan za razširitev jezika C in mu daje zmogljivosti, značilne za objektno usmerjene jezike, zlasti tiste, ki jih je navdihnil Smalltalk. Njegovi začetki segajo v osemdeseta leta prejšnjega stoletja, zahvaljujoč Bradu Coxu in korporaciji StepStone, s ciljem, da bi jeziku C zagotovili sistem sporočanja v slogu Smalltalka, ki bi omogočil večjo prilagodljivost in modularnost programiranja.
Za razliko od čistega jezika C vam Objective-C omogoča ustvarjanje in upravljanje objektov, kar pomeni, da lahko strukturirate svojo kodo okoli entitet, ki imajo tako podatke kot povezane funkcije. To je še posebej uporabno pri razvoju kompleksnih aplikacij, saj spodbuja organizacijo kode, ponovno uporabo in vzdrževanje.
Eden od velikih dosežkov Objective-C je, da njegova sintaksa in delovanje omogočata kombiniranje kode, napisane v jeziku C, z objektno usmerjenimi funkcionalnostmi , kar olajša prehod iz obstoječih projektov v jeziku C in integrira nove, veliko naprednejše funkcije.
Zgodovina in razvoj Objective-C-ja
Začetki jezika Objective-C segajo v osemdeseta leta prejšnjega stoletja, ko sta Brad Cox in Tom Love, razvijalca programske opreme pri podjetju StepStone, prepoznala potrebo po dodajanju zmogljivosti jeziku C, podobnih tistim v jeziku Smalltalk, ki je bil takrat vodilni jezik za objektno usmerjeno programiranje. Njun namen je bil združiti moč, hitrost in priljubljenost jezika C s prilagodljivostjo jezika Smalltalk ter ustvariti hibridni jezik, ki bi ponujal najboljše iz obeh svetov.
Prvotna različica je bila izdana leta 1984 in so jo kasneje sprejela podjetja, kot je NeXT, podjetje, ki ga je ustanovil Steve Jobs po svojem začasnem odhodu iz Appla. NeXT je integriral Objective-C kot glavni jezik svojega operacijskega sistema NeXTSTEP, s čimer je postavil temelje za tisto, kar je kasneje postalo macOS in iOS, ko je Apple konec devetdesetih let prejšnjega stoletja prevzel NeXT.
Od takrat in že skoraj trideset let je Objective-C nesporni standard za razvoj programske opreme v Applovih operacijskih sistemih. Leta 2014 je Apple napovedal Swift kot svoj novi referenčni jezik za razvoj aplikacij, vendar je Objective-C ostal bistveni del ekosistema, zlasti za vzdrževanje obstoječih aplikacij in dostop do starejših API-jev in ogrodij, ki še niso bili preseljeni.
Čeprav Swift trenutno prevladuje pri razvoju novih aplikacij, ostaja Objective-C bistvenega pomena za ekipe, ki delajo na starejših kodnih bazah, ogrodjih, ki niso bila prilagojena Swiftu, in kot most za nekatere projekte na več platformah.
Za kaj se uporablja Objective-C?
Objective-C še posebej izstopa kot primarni programski jezik, ki ga Apple uporablja za operacijska sistema macOS in iOS, pa tudi za svoja najbolj priljubljena izvorna ogrodja: Cocoa in Cocoa Touch. Od grafičnega vmesnika Maca do najkompleksnejših mobilnih aplikacij za iPhone in iPad je Objective-C omogočil ustvarjanje robustne, učinkovite in vzdrževalne programske opreme.
Ena njegovih glavnih prednosti je, da omogoča mešanje kode C in objektno usmerjene kode , kar omogoča uporabo knjižnic C v sodobnih projektih, kar je še posebej uporabno v aplikacijah, ki zahtevajo maksimalno zmogljivost ali integracijo s podedovano kodo.
Nekatere najvidnejše uporabe Objective-C vključujejo:
- Razvoj izvornih aplikacij za iOS in macOS: Še danes je kar nekaj aplikacij v App Store delno ali v celoti napisanih v Objective-C.
- Dostop do starejših Apple API-jev: Številne sistemske funkcije so na voljo samo v tem jeziku, zaradi česar je bistvenega pomena za vzdrževanje in izboljšanje dolgotrajnih projektov.
- Okviri in lastniške knjižnice: Za velike razvojne ekipe je običajno, da še naprej vzdržujejo knjižnice Objective-C zaradi učinkovitosti in združljivosti.
- Združljivost z GNUstep in drugimi platformami: Poleg Appla tudi druge implementacije, kot je GNUstep, omogočajo uporabo Objective-C na sistemih, ki niso Applovi.
Glavne značilnosti Objective-C
Objective-C ponuja številne funkcije, ki jih programerji zelo cenijo, zlasti tisti, ki prihajajo iz sveta C-ja. Spodaj si bomo ogledali najpomembnejše, da bi razumeli, kaj ga dela edinstvenega v primerjavi z drugimi jeziki:
- Objektno usmerjen jezik: Vse se vrti okoli objektov, kar omogoča definicijo razredov, dedovanje, polimorfizem in enkapsulacijo ter jasno delitev kode.
- Nadmnožica C: Ohranja vso funkcionalnost jezika C in omogoča vključitev tradicionalnih naborov ukazov (kot so
while,for,do-while) in manipulirati s primitivnimi podatki skupaj s objekti. - Sporočila v slogu Smalltalk: Klic metod se izvaja s pošiljanjem sporočil objektom, kar zagotavlja veliko prilagodljivost in dinamiko razvoja.
- Eksplicitno upravljanje pomnilnika: Za razliko od sodobnih jezikov z avtomatskim upravljanjem pomnilnika Objective-C od programerja zahteva nadzor nad ustvarjanjem in sproščanjem vsakega objekta, čeprav je bila ta naloga od leta 2011 s prihodom ARC (Automatic Reference Counting) bistveno poenostavljena.
- Podpora za knjižnico C: Omogoča vam ponovno uporabo knjižnic, napisanih v jeziku C, kar olajša integracijo stare kode in po potrebi poveča zmogljivost.
- Podpora za protokole in kategorije: Abstraktne vmesnike lahko definirate z uporabo protokolov in obstoječim razredom dodate dodatne metode z uporabo kategorij.
Osnovna sintaksa in strukture Objective-C
Sintaksa jezika Objective-C je ena od njegovih opredeljujočih značilnosti in čeprav se na prvi pogled morda zdi nenavadna (zlasti oklepaji za pošiljanje sporočil), je precej logična in preprosta, ko se je enkrat navadite. Tukaj je pregled ključnih elementov:
- Deklaracija spremenljivk in primitivnih tipov: Tako kot v jeziku C lahko deklarirate preproste spremenljivke, kot je
int,floatocharPri objektih se pred imenom spremenljivke uporablja zvezdica (MyClass *objeto;). - Pošiljanje sporočil: Za klic metode objekta uporabite sintakso oklepajev:
; - Razredi in metode: Definicija razreda zasede dve datoteki: datoteko vmesnika (
.h) in izvedba (.m). Uporabljajo se direktive@interfacey@implementation. - Nepremičnine: Opredeljeni so z
@propertyin jih običajno spremljajo@synthesizeza samodejno implementacijo metod getter in setter. - Nadzor toka: Prisotni so klasični stavki C:
if,else,switch,while,for. - Vrste zbirk: Obstajajo objekti za sezname (NSArray, NSMutableArray), slovarje (NSDictionary, NSMutableDictionary) in množice (NSSet, NSMutableSet).
Ta sistem omogoča razvijalcem, da podedujejo del logike C, vendar doda plast abstrakcije in modularnosti, ki je zelo cenjena pri velikih projektih.
Praktičen primer: Pozdravljen, svet v Objective-C
Poglejmo, kako bi izgledal osnovni primer v Objective-C za izpis sporočila "Hello World" v konzolo:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hola Mundo");
}
return 0;
}
V tem odlomku vidimo več elementov:
- #uvoz : Uvozi Appleov osnovni objektni okvir.
- @autoreleasepool: Potrebno za upravljanje pomnilnika objektov, še posebej, če se ne uporablja ARC.
- Dnevnik NSL: Funkcija za prikaz informacij v konzoli, enakovredna
printfv jeziku C, vendar prilagojeno za Objective-C.
Objektno usmerjena paradigma v Objective-C
Objective-C v celoti sprejema objektno usmerjeno paradigmo , kar omogoča delo z razredi, objekti, dedovanjem, enkapsulacijo in polimorfizmom. Vsak razred lahko definira spremenljivke primerkov, lastne metode in lastnosti ter ga je mogoče razširiti s podrazredi za dedovanje in spreminjanje vedenj.
Poleg tega je edinstvena lastnost možnost dinamičnega pošiljanja sporočil objektom, kar omogoča razvoj zelo prilagodljivih programov s prilagodljivostjo med izvajanjem, ideja, podedovana neposredno iz Smalltalka.
Omeniti velja tudi možnost organiziranja kode z uporabo kategorij , ki omogočajo dodajanje dodatne funkcionalnosti obstoječim razredom brez ustvarjanja podrazredov, in protokolov , ki omogočajo definiranje pogodb o metodah, ki jih lahko razredi sprejmejo, podobno kot vmesniki v drugih jezikih.
Kategorije in razširitve v Objective-C
Kategorije so eno najmočnejših orodij za razširjanje funkcionalnosti razreda brez spreminjanja njegove izvirne kode ali ustvarjanja podrazredov. Omogočajo vam dodajanje dodatnih metod kateremu koli razredu, tudi če nimate dostopa do njegove implementacije, kar je izjemno uporabno za organiziranje velikih kodnih baz ali implementacijo zasebne funkcionalnosti.
Razširitve (ali »razširitve razredov«) pa služijo za deklariranje zasebnih metod in lastnosti znotraj same implementacije razreda, kar omogoča večjo enkapsulacijo in skrivanje notranjih podrobnosti.
Protokoli v Objective-C
Protokoli delujejo kot abstraktne pogodbe , ki določajo metode, ki jih lahko razredi sprejmejo in implementirajo. Tako lahko kateri koli razred nakaže svojo pripadnost določenemu protokolu in se zaveže k implementaciji njegovih metod. To zagotavlja veliko prilagodljivost in pomaga pri izpolnjevanju vzorcev, kot je delegiranje, ki so tako pogosti pri razvoju aplikacij za iOS in macOS.
Protokol lahko na primer določa metode, kot so turnOnEngine o beNiceToSister:, in različni razredi bi lahko sprejeli te protokole, če bi jih ta funkcionalnost zanimala.
Upravljanje pomnilnika: Ohrani, Sprosti in ARC
V Objective-C je bilo upravljanje pomnilnika tradicionalno eden največjih izzivov za programerje. Pred pojavom ARC ( samodejnega štetja referenc ) je bilo treba ročno nadzorovati zadrževanje in sproščanje vsakega objekta, kar je povečalo tveganje za puščanje pomnilnika in težko zaznavne napake.
Osnovni cikel je sestavljen iz:
- Ustvarite predmet (
alloc). - Uporabite predmet.
- Spustite predmet (
releaseoautorelease).
Z ARC, ki je bil vključen v Xcode 4.2 in iOS 4, prevajalnik samodejno vstavi ukaze retain , release in autorelease , kar drastično poenostavi življenje razvijalca in približa Objective-C izkušnji drugih jezikov z zbiranjem smeti.
Lastnosti in atributi: nadzor dostopa in pomnilnik
The Lastnosti v Objective-C so razglašeni s strani @property in njegovo upravljanje je okrepljeno z različnimi atributi, ki nadzorujejo, kako se vsaka vrednost shranjuje in dostopa do nje. Glavni atributi so:
- dodeli: Dodeli vrednost neposredno, ne da bi ohranil ali sprostil objekt (običajno se uporablja za primitivne tipe ali šibke reference).
- obdržati: Ohranja močno referenco na objekt in povečuje števec vsakič, ko je dodeljen.
- kopirati: Ustvari kopijo dodeljenega objekta, uporabno za besedilne nize ali nespremenljive objekte.
- šibka: Uvedeno z ARC, definira šibko referenco, ki se samodejno nastavi na
nilko je prvotni predmet sproščen. - močan: Močna referenca zagotavlja, da bo objekt na voljo v pomnilniku, dokler lastnost obstaja.
Ta granularnost omogoča razvijalcem, da optimizirajo porabo virov in se izognejo napakam pri dostopu do pomnilnika.
Primerjava: Objective-C proti Swiftu
Od leta 2014 je razvoj za Appleov ekosistem značilen po sobivanju Objective-C in Swift . Oba jezika imata prednosti in slabosti, izbira pa je močno odvisna od vrste projekta in izkušenj razvojne ekipe.
Glavne prednosti Objective-C vključujejo:
- Neposredna združljivost s C in C++: Omogoča vam mešanje imperativne in objektno usmerjene kode, kar je zelo cenjeno v aplikacijah, ki zahtevajo surovo zmogljivost.
- Zrelost in stabilnost: Gre za jezik, ki je bil preizkušen že leta, z veliko skupnostjo in bogato dokumentacijo.
- dinamičnost: Njegov sistem sporočanja in refleksije vam omogoča spreminjanje vedenja aplikacij med izvajanjem.
Swift pa prispeva:
- Večja varnostna jamstva: Zahvaljujoč statičnemu tipkanju, obravnavanju napak in sodobnemu upravljanju pomnilnika.
- Jasnejša in bolj jedrnata sintaksa: Olajša pisanje in vzdrževanje kode, še posebej za tiste, ki ne prihajajo iz sveta C-ja.
- Sodobna orodja: Odlična podpora za imenske prostore, interaktivni razvoj z igralnimi površinami in funkcionalne vzorce.
V prihodnje vse kaže na to, da bo Swift še naprej pridobival na veljavi, vendar bo Objective-C ostal pomemben v velikih podedovanih projektih in pri interoperabilnosti s starejšimi ogrodji.
Prednosti in slabosti Objective-C v primerjavi s Swiftom
Vredno je pregledati nekaj ključnih točk, ki lahko vplivajo na izbiro enega ali drugega jezika:
- Objective-C:
- Omogoča vam učinkovito delo s knjižnicami C in C++.
- Ponuja dinamične funkcije, kot je preklapljanje metod, ki vam omogočajo spreminjanje vedenja med izvajanjem.
- Združljivo z obstoječimi binarnimi ogrodji in knjižnicami drugih ponudnikov.
- Vendar ima majhen imenski prostor, kar lahko pri velikih projektih povzroči konflikte in težave pri odpravljanju napak.
- Sintaksa se lahko novim programerjem zdi zapletena in zastarela.
- Hitro:
- Statično tipkanje in sodobna sintaksa povečujeta varnost in produktivnost.
- Napredna podpora za funkcionalne vzorce in interaktivno upravljanje kode z igralnicami Playgrounds.
- Počasnejše prevajanje pri velikih projektih in nekaj nestabilnosti v formatih modulov ali interoperabilnosti s C++.
Praktične osnove in primeri kode
Za tiste, ki se prvič srečujejo z jezikom Objective-C, bo morda koristno pregledati nekaj praktičnih primerov njegove uporabe v projektih iz resničnega sveta. Tukaj je nekaj ključnih struktur in konceptov:
Deklariranje razredov in metod
// 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
V tem primeru MyClass deduje od NSObject , korenskega razreda večine objektov v Cocoa.
Uporaba nizov in slovarjev
NSArray *array = @;
NSString *elemento = array; // "dos"
NSDictionary *diccionario = @{ @"clave1": @"valor1", @"clave2": @"valor2" };
NSString *valor = diccionario; // "valor1"
Zanke in krmilne strukture
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");
}
Klasično upravljanje pomnilnika (brez ARC)
MyClass *objeto = init];
// Se usa el objeto
; // Liberar cuando termine de usarse
Združljivost in podprte platforme
Čeprav je Objective-C neločljiv del Appleovega ekosistema, implementacije, kot je GNUstep, omogočajo razvoj s tem jezikom na drugih platformah, vključno z Linuxom in Windowsom. Vendar pa je njegova uporaba zunaj okolij macOS in iOS zelo omejena in je običajno vezana na nišne projekte ali interoperabilnost s starejšo kodo. Kaj je Objective-C?
Znotraj Appla Objective-C ostaja podprt v vseh sodobnih različicah macOS, iOS, iPadOS, tvOS in watchOS ter je izvedljiva možnost tako v Xcode kot v orodjih ukazne vrstice.
Viri in učenje za Objective-C
Za tiste, ki se želijo naučiti ali izboljšati svoje znanje Objective-C, je na voljo obilica gradiv, vadnic in spletnih tečajev. Od univerzitetnih platform in šol za tehnično usposabljanje do video kanalov in uradne Applove dokumentacije je učenje enostavno in raznoliko. Naučite se, kako postati uspešen razvijalec mobilnih aplikacij.
Med najpogostejšimi možnostmi za usposabljanje so:
- Razlagalni videoposnetki.
- E-knjige in praktični priročniki.
- Vadnice po korakih, tako besedilne kot video.
- Spletne skupnosti razvijalcev in tehnični forumi.
- Tečaji na specializiranih platformah, od osnovnih do naprednih stopenj.
Poleg tega številne od teh platform ponujajo certifikate za tiste, ki zaključijo programe usposabljanja, kar je lahko prednost pri iskanju dela v tem sektorju.
Zakaj se danes učiti Objective-C?
Morda se zdi nesmiselno učiti se Objective-C v teh dneh, še posebej, če je vaš glavni cilj začetek novih projektov. Vendar pa je njegovo obvladovanje še vedno zelo priporočljivo, če boste delali v podjetjih s starejšimi kodnimi bazami, vzdrževali aplikacije, ki so že v produkciji, ali če vas privlači notranje delovanje Apple platform. Združljivost Objective-C s Swiftom omogoča sobivanje obeh jezikov v istem projektu, kar olajša postopno selitev aplikacij, ne da bi bilo treba vse znova graditi od začetka.
Poleg tega dejstvo, da Objective-C ostaja tehnično merilo v mnogih vidikih razvoja za iOS in macOS, zagotavlja njegovo ustreznost na trgu dela, zlasti za višje profile ter za vodstvene vloge v arhitekturi ali tehniki.
Na tej poti ste videli, kako je jezik Objective-C zaznamoval prelomnico v razvoju programske opreme Apple in kako je njegova filozofija, ki temelji na razširjanju jezika C in vključevanju objektno usmerjenih paradigm, omogočila ustvarjanje robustnih, prilagodljivih in zelo prilagodljivih aplikacij. Čeprav je priljubljenost jezika Swift nekoliko izpodrinila njegovo uporabo, ostaja obvladovanje jezika Objective-C temeljna prednost za vsakega razvijalca, ki želi z lahkoto krmariti po ekosistemu Apple in se spopasti z izzivi sodobnega programiranja in vzdrževanja velikih projektov. Bodisi zaradi združljivosti, starejših arhitektur ali preprosto iz tehnične radovednosti, učenje jezika Objective-C odpira vrata v zgodovino in sedanjost potrošniškega računalništva.
Kazalo
- 1 Kaj je Objective-C?
- 2 Zgodovina in razvoj Objective-C-ja
- 3 Za kaj se uporablja Objective-C?
- 4 Glavne značilnosti Objective-C
- 5 Osnovna sintaksa in strukture Objective-C
- 6 Praktičen primer: Pozdravljen, svet v Objective-C
- 7 Objektno usmerjena paradigma v Objective-C
- 8 Kategorije in razširitve v Objective-C
- 9 Protokoli v Objective-C
- 10 Upravljanje pomnilnika: Ohrani, Sprosti in ARC
- 11 Lastnosti in atributi: nadzor dostopa in pomnilnik
- 12 Primerjava: Objective-C proti Swiftu
- 13 Prednosti in slabosti Objective-C v primerjavi s Swiftom
- 14 Praktične osnove in primeri kode
- 15 Združljivost in podprte platforme
- 16 Viri in učenje za Objective-C
- 17 Zakaj se danes učiti Objective-C?
