Objective-C: kõik, mida peate teadma Apple'i võtmekeele kohta

Viimane uuendus: 19 juuni 2025
  • Objective-C on objektorienteeritud keel, mis loodi C laiendusena ja mida on aastakümneid kasutatud Apple'i rakenduste arendamisel.
  • See paistab silma oma paindlikkuse, C-koodi ja objektorienteerituse kombinatsiooni, ühilduvuse vanemate API-de ja raamistikega ning dünaamilise sõnumsidesüsteemi poolest.
  • See eksisteerib Apple'i projektides praegu koos Swiftiga ning on endiselt oluline pärandrakenduste ja teekide hooldamiseks ja koostalitlusvõime tagamiseks.

Objective-C programmeerimiskeel

Objective-C on üks neist programmeerimiskeeltest, mis, kuigi viimasel ajal Swifti esiletõusu tõttu mõnevõrra varju jäänud, on endiselt oluline tööriist Apple'i süsteemide programmeerimise ajaloos ja olevikus. Kui olete kuulnud iOS-i või macOS-i rakenduste loomisest , olete peaaegu kindlasti selle keelega kokku puutunud, kuna see on olnud Apple'i ökosüsteemi arenduse nurgakiviks juba üle kahe aastakümne.

Selles artiklis uurime kõike, mida peate teadma Objective-C mõistmiseks : selle kõige iseloomulikumaid omadusi, päritolu, kus seda praegu kasutatakse ja kuidas see võrreldakse alternatiividega nagu Swift. Samuti näete praktilisi näiteid, mis aitavad teil mõista selle süntaksit, struktuuri ja võimalusi, samuti mäluhalduse põhiaspekte, objektorienteeritud paradigmat, protokolle ja palju muud. Olge valmis, sest me süveneme selle põneva keele igasse nurka.

Mis on Objective-C?

Objective-C on objektorienteeritud programmeerimiskeel, mis on loodud C-keele laiendamiseks, andes sellele objektpõhistele keeltele, eriti Smalltalkist inspireeritud keeltele, tüüpilised võimalused. Selle päritolu ulatub tagasi 1980. aastatesse tänu Brad Coxile ja StepStone Corporationile, eesmärgiga pakkuda C-keelele Smalltalki-stiilis sõnumsidesüsteemi, mis võimaldaks programmeerimisel suuremat paindlikkust ja modulaarsust.

Erinevalt puhtast C-st võimaldab Objective-C teil luua ja manipuleerida objektidega, mis tähendab, et saate oma koodi struktureerida üksuste ümber, millel on nii andmed kui ka nendega seotud funktsioonid. See on eriti kasulik keerukate rakenduste arendamisel, kuna see soodustab koodi korrastamist, taaskasutamist ja hooldatavust.

Üks Objective-C suurimaid saavutusi on see, et selle süntaks ja toimimine võimaldavad kombineerida C-s kirjutatud koodi objektorienteeritud funktsioonidega , hõlbustades seega üleminekut olemasolevatelt C-projektidelt ja integreerides uusi, palju keerukamaid funktsioone.

Objective-C ajalugu ja areng

Objective-C päritolu ulatub tagasi 80. aastatesse, kui StepStone'i tarkvaraarendajad Brad Cox ja Tom Love mõistsid vajadust lisada C-le sarnaseid võimalusi nagu Smalltalkil, mis oli tol ajal juhtiv objektorienteeritud programmeerimiskeel. Nende eesmärk oli ühendada C võimsus, kiirus ja populaarsus Smalltalki paindlikkusega, luues hübriidkeele, mis pakuks parimat mõlemast maailmast.

Esialgne versioon ilmus 1984. aastal ja hiljem võtsid selle kasutusele sellised ettevõtted nagu NeXT, mille asutas Steve Jobs pärast oma ajutist lahkumist Apple'ist. NeXT integreeris Objective-C oma NeXTSTEP operatsioonisüsteemi põhikeeleks, pannes aluse sellele, millest said hiljem macOS ja iOS, kui Apple 90. aastate lõpus NeXTi omandas.

Sellest ajast alates, ja peaaegu kolmkümmend aastat, on Objective-C olnud vaieldamatu standard Apple'i operatsioonisüsteemides tarkvara arendamisel. 2014. aastal kuulutas Apple Swifti oma uueks rakenduste arendamise viitekeeleks, kuid Objective-C on jäänud ökosüsteemi oluliseks osaks, eriti olemasolevate rakenduste haldamiseks ja veel migreerimata pärand-API-dele ja raamistikele juurdepääsuks.

Praegu , kuigi Swift domineerib uute rakenduste arendamisel, on Objective-C endiselt oluline meeskondadele, kes töötavad vanemate koodibaaside ja Swiftile kohandamata raamistikega, ning teatud platvormideüleste projektide sillana.

Milleks Objective-C-d kasutatakse?

Objective-C paistab silma eriti Apple'i peamise programmeerimiskeelena macOS-i ja iOS-i operatsioonisüsteemides, aga ka oma populaarseimates natiivraamistikes: Cocoa ja Cocoa Touch. Maci graafilisest liidesest kuni kõige keerukamate mobiilirakendusteni iPhone'ile ja iPadile on Objective-C hõlbustanud töökindla, tõhusa ja hooldatava tarkvara loomist.

Üks selle peamisi eeliseid on see, et see võimaldab segada C-koodi ja objektorienteeritud koodi , võimaldades C-teegide kasutamist tänapäevastes projektides, mis on eriti kasulik rakendustes, mis nõuavad maksimaalset jõudlust või integratsiooni pärandkoodiga.

Mõned Objective-C silmapaistvamad kasutusalad on järgmised:

  • Natiivsete rakenduste arendus iOS-ile ja macOS-ile: Isegi tänapäeval on App Store'is palju rakendusi, osaliselt või täielikult, kirjutatud Objective-C-s.
  • Juurdepääs Apple'i pärand-API-dele: Paljud süsteemi funktsioonid on saadaval ainult selles keeles, mistõttu on see pikaajaliste projektide haldamiseks ja täiustamiseks hädavajalik.
  • Raamistikud ja patenteeritud teegid: Suurte arendusmeeskondade jaoks on tavaline, et efektiivsuse ja ühilduvuse huvides jätkavad nad Objective-C teekide haldamist.
  • Ühilduvus GNUstepi ja teiste platvormidega: Lisaks Apple'ile võimaldavad ka teised implementatsioonid, näiteks GNUstep, Objective-C kasutamist mitte-Apple'i süsteemides.
  Algoli programmeerimiskeel: 10 peamist aspekti

Objective-C peamised omadused

Objective-C pakub mitmeid funktsioone, mida programmeerijad, eriti C-maailmast pärit programmeerijad, kõrgelt hindavad. Allpool vaatame üle kõige olulisemad, et mõista, mis teeb selle teiste keeltega võrreldes ainulaadseks:

  • Objektorienteeritud keel: Kõik keerleb objektide ümber, võimaldades klasside defineerimist, pärimist, polümorfismi ja kapseldamist, samuti selget koodijaotust.
  • C ülemhulk: See säilitab kogu C funktsionaalsuse, võimaldades traditsiooniliste käskude komplektide (näiteks while, for, do-while) ja manipuleerida primitiivsete andmetega koos objektidega.
  • Smalltalki stiilis sõnumivahetus: Meetodi kutsumine toimub objektidele sõnumite saatmise teel, mis pakub arendusele suurt paindlikkust ja dünaamilisust.
  • Selgesõnaline mäluhaldus: Erinevalt tänapäevastest automaatse mäluhaldusega keeltest nõuab Objective-C programmeerijalt iga objekti loomise ja vabastamise juhtimist, kuigi alates 2011. aastast ARC (Automatic Reference Counting) tulekuga on see ülesanne oluliselt lihtsustatud.
  • C teekide tugi: See võimaldab teil C-keeles kirjutatud teeke taaskasutada, hõlbustades vana koodi integreerimist ja vajadusel jõudlust suurendades.
  • Protokollide ja kategooriate tugi: Abstraktseid liideseid saab defineerida protokollide abil ja kategooriate abil olemasolevatele klassidele täiendavaid meetodeid lisada.

Objective-C põhisüntaks ja struktuurid

Objective-C süntaks on üks selle määravamaid omadusi ja kuigi see võib esmapilgul tunduda kummaline (eriti sõnumite saatmise nurksulgudes tähistamine), on see harjudes üsna loogiline ja arusaadav. Siin on ülevaade põhielementidest:

  • Muutujate ja primitiivitüüpide deklareerimine: Nii nagu C-s, saab deklareerida ka lihtsaid muutujaid, näiteks int, float o charObjektide puhul kasutatakse muutuja nime ees tärni (MyClass *objeto;).
  • Sõnumite saatmine: Objekti meetodi kutsumiseks kasutate nurksulgude süntaksit: ;
  • Klassid ja meetodid: Klassi definitsioon hõlmab kahte faili: liidest (.h) ja rakendamine (.m). Direktiive kasutatakse @interface y @implementation.
  • Atribuudid: Need on defineeritud koos @property ja nendega kaasneb tavaliselt @synthesize getteri ja setteri meetodite automaatseks rakendamiseks.
  • Flujo kontroll: Klassikalised C-laused on olemas: if, else, switch, while, for.
  • Kollektsioonitüübid: On olemas objektid loendite (NSArray, NSMutableArray), sõnastike (NSDictionary, NSMutableDictionary) ja komplektide (NSSet, NSMutableSet) jaoks.

See süsteem võimaldab arendajatel pärida osa C-loogikast, kuid lisab abstraktsiooni ja modulaarsuse kihi, mida suurtes projektides kõrgelt hinnatakse.

Praktiline näide: Tere, maailm Objective-C-s

Vaatame, milline näeks välja Objective-C lihtne näide "Hello World" konsoolile väljastamiseks:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hola Mundo");
    }
    return 0;
}

Selles fragmendis näeme mitmeid elemente:

  • #import : Impordib Apple'i põhiobjektide raamistiku.
  • @autoreleasepool: Vajalik objektimälu haldamiseks, eriti kui ARC-i ei kasutata.
  • NSLog: Funktsioon teabe kuvamiseks konsoolis, mis on samaväärne funktsiooniga printf C-s, aga kohandatud Objective-C jaoks.

Objektorienteeritud paradigma Objective-C-s

Objective-C võtab täielikult omaks objektorienteeritud paradigma , võimaldades töötada klasside, objektide, pärimise, kapseldamise ja polümorfismiga. Iga klass saab defineerida eksemplari muutujaid, oma meetodeid ja omadusi ning seda saab laiendada alamklasside kaudu käitumise pärimiseks ja muutmiseks.

Lisaks on ainulaadseks omaduseks võime dünaamiliselt saata sõnumeid objektidele, mis soodustab väga paindlike ja käitusaja kohandatavusega programmide arendamist – idee, mis on päritud otse Smalltalkilt.

Samuti on tähelepanuväärne võimalus koodi korraldada kategooriate abil , mis võimaldavad olemasolevatele klassidele lisada funktsionaalsust ilma alamklasse loomata, ja protokollide abil , mis võimaldavad määratleda meetodilepinguid, mida klassid saavad omaks võtta, sarnaselt teiste keelte liidestega.

Kategooriad ja laiendused Objective-C-s

Kategooriad on ühed võimsamad tööriistad klassi funktsionaalsuse laiendamiseks ilma algset koodi muutmata või alamklasse loomata. Need võimaldavad teil lisada mis tahes klassile täiendavaid meetodeid, isegi kui teil pole juurdepääsu selle implementatsioonile, mis on äärmiselt kasulik suurte koodibaaside korraldamiseks või privaatse funktsionaalsuse rakendamiseks.

  Kuidas Markdowni kiiresti GitHubis ja Redditis kasutada

Laiendused (või „klassi laiendused“) omalt poolt deklareerivad klassi implementatsioonis privaatseid meetodeid ja omadusi, võimaldades seeläbi sisemiste detailide paremat kapseldamist ja peitmist.

Protokollid Objective-C-s

Protokollid toimivad abstraktsete lepingutena, mis määratlevad meetodid, mida klassid saavad omaks võtta ja rakendada. Seega saab iga klass näidata oma järgimist konkreetsele protokollile ja pühenduda selle meetodite rakendamisele. See pakub suurt paindlikkust ja aitab täita mustreid, näiteks delegeerimist, mis on iOS-i ja macOS-i rakenduste arendamisel nii levinud.

Näiteks võib protokoll määrata meetodid, näiteks turnOnEngine o beNiceToSister:ja erinevad klassid saaksid neid protokolle omaks võtta, kui nad on sellest funktsionaalsusest huvitatud.

Mäluhaldus: säilitamine, vabastamine ja ARC

Objective-C-s on mäluhaldus traditsiooniliselt olnud programmeerijate üks suurimaid väljakutseid . Enne ARC-i ( automaatse viiteloenduse ) tulekut oli vaja iga objekti säilitamist ja vabastamist käsitsi kontrollida, mis suurendas mälulekete ja raskesti tuvastatavate vigade ohtu.

Põhitsükkel koosneb järgmisest:

  • Loo objekt (alloc).
  • Kasutage objekti.
  • Vabasta objekt (release o autorelease).

ARC-iga, mis lisati Xcode 4.2 ja iOS 4-sse, lisab kompilaator automaatselt säilitamise , vabastamise ja automaatse vabastamise käsud , lihtsustades oluliselt arendaja elu ja tuues Objective-C prügikoristuskogemusele lähemale.

Omadused ja atribuudid: juurdepääsu kontroll ja mälu

The Omadused Objective-C-s on deklareeritud @property ja selle haldamist tugevdatakse mitmesuguste atribuutide abil, mis kontrollivad iga väärtuse salvestamist ja sellele juurdepääsu. Peamised atribuudid on:

  • määrama: Määrab väärtuse otse, ilma objekti säilitamata või vabastamata (kasutatakse tavaliselt primitiivtüüpide või nõrkade viidete puhul).
  • säilitama: Säilitab objektile tugeva viite, suurendades loendurit iga kord, kui see omistatakse.
  • koopia: Loob määratud objektist koopia, mis on kasulik tekstistringide või muutmatute objektide puhul.
  • nõrk: ARC-ga kasutusele võetud, defineerib nõrga viite, mis seatakse automaatselt väärtusele nil kui algne objekt vabastatakse.
  • tugev: Tugev viide tagab, et seni, kuni omadus eksisteerib, on objekt mälus saadaval.

See detailsus võimaldab arendajatel optimeerida ressursikasutust ja vältida mälule juurdepääsu vigu.

Võrdlus: Objective-C vs Swift

Alates 2014. aastast on Apple'i ökosüsteemi arendust iseloomustanud Objective-C ja Swifti kooseksisteerimine . Mõlemal keelel on oma tugevused ja nõrkused ning valik sõltub suuresti projekti tüübist ja arendusmeeskonna kogemusest.

Objective-C peamised eelised on järgmised:

  • Otsene ühilduvus C ja C++-ga: See võimaldab teil segada imperatiivset ja objektorienteeritud koodi, mis on väga hinnatud rakendustes, mis nõuavad toorest jõudlust.
  • Küpsus ja stabiilsus: See on keel, mida on aastaid testitud, millel on suur kogukond ja rikkalik dokumentatsioon.
  • Dünaamilisus: Selle sõnumside- ja peegeldussüsteem võimaldab teil rakenduste käitumist käitusajal muuta.

Swift omalt poolt panustab:

  • Suuremad turvagarantiid: Tänu staatilisele tüübimisele, veakäsitlusele ja kaasaegsele mäluhaldusele.
  • Selgem ja kokkuvõtlikum süntaks: See teeb koodi kirjutamise ja haldamise lihtsamaks, eriti neile, kes ei ole pärit C-maailmast.
  • Kaasaegsed tööriistad: Suurepärane tugi nimeruumidele, interaktiivsele arendusele Playgroundsiga ja funktsionaalsetele mustritele.

Tulevikku vaadates viitab kõik Swifti jätkuvale populaarsuse kasvule, kuid Objective-C jääb oluliseks suurtes pärandprojektides ja vanemate raamistikega koostalitlusvõime osas.

Objective-C ja Swifti eelised ja puudused

Tasub üle vaadata mõned põhipunktid, mis võivad mõjutada ühe või teise keele valikut:

  • Eesmärk-C:
    • Võimaldab teil tõhusalt töötada C ja C++ teekidega.
    • See pakub dünaamilisi funktsioone, näiteks meetodite segamist, mis võimaldavad teil käitumist käitusajal muuta.
    • Ühildub olemasolevate binaarraamistike ja kolmandate osapoolte teekidega.
    • Siiski on sellel väike nimeruum, mis võib suurtes projektides kaasa tuua konflikte ja raskesti silutavaid vigu.
    • Süntaks võib algajatele programmeerijatele tunduda keeruline ja aegunud.
  • Kiire:
    • Staatiline tippimine ja moodne süntaks suurendavad turvalisust ja tootlikkust.
    • Täiustatud tugi funktsionaalsetele mustritele ja interaktiivsele koodihaldusele Playgroundsiga.
    • Aeglasem kompileerimine suurte projektide puhul ja teatav ebastabiilsus moodulivormingutes või koostalitlusvõimes C++-ga.

Praktilised põhitõed ja koodinäited

Neile, kes on Objective-C-ga alles tutvumas, võib olla kasulik vaadata mõningaid praktilisi näiteid selle kasutamisest reaalsetes projektides. Siin on mõned peamised struktuurid ja kontseptsioonid:

  CSS raamistik: täielik juhend oma projekti jaoks parima valimiseks

Klasside ja meetodite deklareerimine

// 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

Selles näites pärib MyClass klassilt NSObject , mis on enamiku Cocoa objektide juurklass.

Massiivide ja sõnastike kasutamine

NSArray *array = @;
NSString *elemento = array; // "dos"

NSDictionary *diccionario = @{ @"clave1": @"valor1", @"clave2": @"valor2" };
NSString *valor = diccionario; // "valor1"

Silmused ja juhtimisstruktuurid

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");
}

Klassikaline mäluhaldus (ilma ARC-ita)

MyClass *objeto =  init];
// Se usa el objeto
; // Liberar cuando termine de usarse

Ühilduvus ja toetatud platvormid

Kuigi Objective-C on Apple'i ökosüsteemist lahutamatu, võimaldavad sellised implementatsioonid nagu GNUstep selle keelega arendamist ka teistel platvormidel, sealhulgas Linuxil ja Windowsil. Selle kasutamine väljaspool macOS-i ja iOS-i keskkondi on aga väga piiratud ning üldiselt seotud nišiprojektide või koostalitlusvõimega pärandkoodiga. Mis on Objective-C?

Apple'i sees toetatakse Objective-C-d endiselt kõigis macOS-i, iOS-i, iPadOS-i, tvOS-i ja watchOS-i tänapäevastes versioonides ning see on elujõuline valik nii Xcode'is kui ka käsurea tööriistades.

Objective-C ressursid ja õppimine

Neile, kes soovivad õppida või oma Objective-C oskusi täiendada, on saadaval lai valik materjale, õpetusi ja veebikursusi. Ülikooliplatvormidest ja tehnilise koolituse koolidest videokanalite ja ametliku Apple'i dokumentatsioonini – õppimine on lihtne ja mitmekesine. Siit saate teada, kuidas saada edukaks mobiilirakenduste arendajaks.

Kõige levinumate koolitusvõimaluste hulgas on:

  • Selgitavad videod.
  • E-raamatud ja praktilised käsiraamatud.
  • Samm-sammult õpetused, nii teksti kui ka video kujul.
  • Veebipõhised arendajate kogukonnad ja tehnilised foorumid.
  • Spetsialiseeritud platvormidel toimuvad kursused alates algtasemest kuni edasijõudnuteni.

Lisaks pakuvad paljud neist platvormidest sertifikaate neile, kes on oma koolitusprogrammid läbinud, mis võib olla eeliseks selles valdkonnas töö otsimisel.

Miks õppida Objective-C-d juba täna?

Tänapäeval võib Objective-C õppimine tunduda mõttetu, eriti kui teie peamine eesmärk on alustada uute projektidega. Selle omandamine on siiski väga soovitatav , kui kavatsete töötada ettevõtetes, kus on vananenud koodibaasid, hooldada juba tootmises olevaid rakendusi või kui teid köidab Apple'i platvormide sisemine toimimine. Objective-C ühilduvus Swiftiga võimaldab mõlemal keelel samas projektis koos eksisteerida, hõlbustades rakenduste järkjärgulist migreerimist ilma, et peaksite kõike nullist uuesti üles ehitama.

Lisaks tagab asjaolu, et Objective-C on iOS-i ja macOS-i arenduse paljudes aspektides endiselt tehniline etalon, selle asjakohasuse tööturul, eriti kõrgemate profiilide ja arhitektuuriliste või tehniliste juhtide rollide puhul.

Selle teekonna jooksul olete näinud, kuidas Objective-C keel on tähistanud pöördepunkti Apple'i tarkvaraarenduses ning kuidas selle filosoofia, mis põhineb C laiendamisel ja objektorienteeritud paradigmade kaasamisel, on võimaldanud luua vastupidavaid, paindlikke ja väga kohanemisvõimelisi rakendusi. Kuigi Swifti populaarsus on selle kasutamist mõnevõrra tõrjunud, on Objective-C valdamine endiselt oluline vara igale arendajale, kes soovib Apple'i ökosüsteemis hõlpsalt navigeerida ning lahendada tänapäevase programmeerimise ja suurte projektide haldamise väljakutseid. Olgu selleks ühilduvuse, vananenud arhitektuuride või lihtsalt tehnilise uudishimu tõttu, avab Objective-C õppimine ukse tarbijaarvutite ajalukku ja olevikku.

pärand OOP-is
Seotud artikkel:
Enim kasutatud programmeerimiskeeli 2024. aastal