Objective-C: Viss, kas jums jāzina par Apple galveno valodu

Pēdējā atjaunošana: 19 jūnijs 2025
  • Objective-C ir objektorientēta valoda, kas izveidota kā C paplašinājums un gadu desmitiem izmantota Apple lietotņu izstrādē.
  • Tas izceļas ar savu elastību, C koda un objektorientācijas apvienojumu, saderību ar mantotajām API un ietvariem, kā arī dinamisko ziņojumapmaiņas sistēmu.
  • Pašlaik tā pastāv līdzās Swift Apple projektos un joprojām ir būtiska mantotu lietojumprogrammu un bibliotēku uzturēšanai un sadarbspējai.

Objective-C programmēšanas valoda

Objective-C ir viena no tām programmēšanas valodām, kas, lai gan pēdējā laikā to nedaudz aizēnojusi Swift uzplaukums, joprojām ir būtisks instruments Apple sistēmu programmēšanas vēsturē un tagadnē. Ja esat dzirdējuši par lietojumprogrammu izveidi iOS vai macOS , jūs gandrīz noteikti esat saskārušies ar šo valodu, jo tā ir bijusi Apple ekosistēmas attīstības stūrakmens vairāk nekā divas desmitgades.

Šajā rakstā mēs izpētīsim visu, kas jums jāzina, lai izprastu Objective-C : tās atšķirīgākās iezīmes, izcelsmi, kur tā pašlaik tiek izmantota un kā tā salīdzināma ar alternatīvām, piemēram, Swift. Jūs arī redzēsiet praktiskus piemērus, kas palīdzēs jums izprast tās sintaksi, struktūru un iespējas, kā arī galvenos atmiņas pārvaldības aspektus, objektorientēto paradigmu, protokolus un daudz ko citu. Gatavojieties, jo mēs iedziļināsimies katrā šīs aizraujošās valodas stūrītī.

Kas ir Objective-C?

Objective-C ir objektorientēta programmēšanas valoda, kas izstrādāta, lai paplašinātu C valodu, piešķirot tai iespējas, kas raksturīgas objektorientētām valodām, īpaši tām, kuras iedvesmojusi Smalltalk. Tās pirmsākumi meklējami 1980. gs. astoņdesmitajos gados, pateicoties Bredam Koksam un uzņēmumam StepStone Corporation, kura mērķis bija nodrošināt C valodu ar Smalltalk stila ziņojumapmaiņas sistēmu, kas nodrošinātu lielāku programmēšanas elastību un modularitāti.

Atšķirībā no tīras C valodas , Objective-C ļauj izveidot un manipulēt ar objektiem, kas nozīmē, ka kodu var strukturēt ap entītijām, kurām ir gan dati, gan saistītas funkcijas. Tas ir īpaši noderīgi sarežģītu lietojumprogrammu izstrādē, jo veicina koda organizēšanu, atkārtotu izmantošanu un uzturēšanas iespējas.

Viens no Objective-C lielākajiem sasniegumiem ir tas, ka tā sintakse un darbība ļauj apvienot C valodā rakstītu kodu ar objektorientētām funkcijām , tādējādi atvieglojot pāreju no esošajiem C projektiem un integrējot jaunas, daudz sarežģītākas funkcijas.

Objective-C vēsture un evolūcija

Objective-C pirmsākumi meklējami 80. gs. astoņdesmitajos gados, kad Breds Kokss un Toms Lavs, programmatūras izstrādātāji uzņēmumā StepStone, atzina nepieciešamību pievienot C iespējas, kas līdzīgas Smalltalk iespējām, kas tolaik bija vadošā objektorientētās programmēšanas valoda. Viņu mērķis bija apvienot C jaudu, ātrumu un popularitāti ar Smalltalk elastību, radot hibrīdvalodu, kas piedāvāja labāko no abām pasaulēm.

Sākotnējā versija tika izlaista 1984. gadā, un vēlāk to pārņēma tādi uzņēmumi kā NeXT, kuru dibināja Stīvs Džobss pēc īslaicīgas aiziešanas no Apple. NeXT integrēja Objective-C kā galveno valodu savā NeXTSTEP operētājsistēmā, liekot pamatus tam, kas vēlāk kļuva par macOS un iOS, kad Apple 20. gadsimta 90. gadu beigās iegādājās NeXT.

Kopš tā laika, gandrīz trīsdesmit gadus, Objective-C ir bijis neapstrīdams standarts programmatūras izstrādei Apple operētājsistēmās. 2014. gadā Apple paziņoja par Swift kā savu jauno atsauces valodu lietotņu izstrādei, taču Objective-C joprojām ir būtiska ekosistēmas sastāvdaļa, īpaši esošo lietojumprogrammu uzturēšanai un piekļuvei mantotajām API un ietvariem, kas vēl nav migrēti.

Pašlaik , lai gan Swift dominē jaunu lietotņu izstrādē, Objective-C joprojām ir būtiska komandām, kas strādā ar vecākām koda bāzēm, ietvariem, kas nav pielāgoti Swift, un kā tilts noteiktiem starpplatformu projektiem.

Kam tiek izmantota Objective-C programmatūra?

Objective-C īpaši izceļas kā galvenā programmēšanas valoda, ko Apple izmanto macOS un iOS operētājsistēmām, kā arī populārākajiem vietējiem ietvariem: Cocoa un Cocoa Touch. Sākot ar Mac grafisko saskarni un beidzot ar vissarežģītākajām mobilajām lietojumprogrammām iPhone un iPad, Objective-C ir veicinājusi stabilas, efektīvas un viegli uzturējamas programmatūras izveidi.

Viena no galvenajām priekšrocībām ir tā, ka tā ļauj apvienot C kodu un objektorientētu kodu , ļaujot izmantot C bibliotēkas mūsdienu projektos, kas ir īpaši noderīgi lietojumprogrammās, kurām nepieciešama maksimāla veiktspēja vai integrācija ar mantotu kodu.

Daži no ievērojamākajiem Objective-C lietojumiem ir šādi:

  • Vietējo lietotņu izstrāde operētājsistēmām iOS un macOS: Pat mūsdienās labs skaits lietotņu App Store ir daļēji vai pilnībā rakstītas Objective-C valodā.
  • Piekļuve mantotajām Apple API: Daudzas sistēmas funkcijas ir pieejamas tikai šajā valodā, tāpēc tā ir būtiska ilgstošu projektu uzturēšanai un uzlabošanai.
  • Ietvari un pašu bibliotēkas: Lielām izstrādes komandām ir ierasts turpināt uzturēt Objective-C bibliotēkas efektivitātes un saderības labad.
  • Saderība ar GNUstep un citām platformām: Papildus Apple, arī citas implementācijas, piemēram, GNUstep, ļauj Objective-C izmantot sistēmās, kas nav Apple sistēmas.
  Algol programmēšanas valoda: 10 galvenie aspekti

Objective-C galvenās iezīmes

Objective-C piedāvā vairākas funkcijas, ko programmētāji augstu vērtē, īpaši tie, kas nāk no C pasaules. Tālāk mēs apskatīsim svarīgākās no tām, lai saprastu, kas to padara unikālu salīdzinājumā ar citām valodām:

  • Objektorientēta valoda: Viss griežas ap objektiem, ļaujot definēt klases, mantošanu, polimorfismu un iekapsulēšanu, kā arī skaidru koda sadalījumu.
  • C superkopa: Tas saglabā visu C funkcionalitāti, ļaujot iekļaut tradicionālās instrukciju kopas (piemēram, while, for, do-while) un manipulēt ar primitīviem datiem līdzās objektiem.
  • Smalltalk stila ziņojumapmaiņa: Metodes izsaukšana tiek veikta, nosūtot ziņojumus objektiem, nodrošinot lielu izstrādes elastību un dinamiku.
  • Skaidra atmiņas pārvaldība: Atšķirībā no mūsdienu valodām ar automātisku atmiņas pārvaldību, Objective-C prasa, lai programmētājs kontrolētu katra objekta izveidi un atbrīvošanu, lai gan kopš 2011. gada, kad parādījās ARC (automātiskā atsauces skaitīšana), šis uzdevums ir ievērojami vienkāršots.
  • C bibliotēkas atbalsts: Tas ļauj atkārtoti izmantot C valodā rakstītas bibliotēkas, atvieglojot vecā koda integrāciju un nepieciešamības gadījumā palielinot veiktspēju.
  • Atbalsts protokoliem un kategorijām: Varat definēt abstraktas saskarnes, izmantojot protokolus, un pievienot esošajām klasēm papildu metodes, izmantojot kategorijas.

Objective-C pamata sintakse un struktūras

Objective-C sintakse ir viena no tās raksturīgākajām iezīmēm, un, lai gan pirmajā acu uzmetienā tā var šķist dīvaina (īpaši iekavu apzīmējums ziņojumu sūtīšanai), tā ir diezgan loģiska un vienkārša, kad pie tās pierod. Šeit ir galveno elementu pārskats:

  • Mainīgo un primitīvo tipu deklarēšana: Tāpat kā C valodā, jūs varat deklarēt vienkāršus mainīgos, piemēram, int, float o charObjektiem pirms mainīgā nosaukuma tiek izmantota zvaigznīte (MyClass *objeto;).
  • Ziņojumu sūtīšana: Lai izsauktu objekta metodi, izmantojat iekavu sintaksi: ;
  • Nodarbības un metodes: Klases definīcija aizņem divus failus: saskarni (.h) un ieviešana (.m). Tiek izmantotas direktīvas @interface y @implementation.
  • Īpašības: Tie ir definēti ar @property un parasti tos pavada @synthesize lai automātiski ieviestu getter un setter metodes.
  • Gripas kontrole: Klasiskie C apgalvojumi ir klātesoši: if, else, switch, while, for.
  • Kolekcijas veidi: Ir objekti sarakstiem (NSArray, NSMutableArray), vārdnīcām (NSDictionary, NSMutableDictionary) un kopām (NSSet, NSMutableSet).

Šī sistēma ļauj izstrādātājiem mantot daļu no C loģikas, bet pievieno abstrakcijas un modularitātes slāni, kas tiek augstu vērtēts lielos projektos.

Praktisks piemērs: Sveika, pasaule! (Hello World) Objective-C valodā

Apskatīsim, kā izskatītos vienkāršs piemērs Objective-C valodā, lai konsolē izdrukātu "Hello World":

#import <Foundation/Foundation.h>

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

Šajā fragmentā mēs redzam vairākus elementus:

  • #importēt : Importē Apple galveno objektu ietvaru.
  • @autoreleasepool: Nepieciešams objektu atmiņas pārvaldībai, īpaši, ja netiek izmantots ARC.
  • NSLog: Funkcija informācijas attēlošanai konsolē, līdzvērtīga printf C valodā, bet pielāgots Objective-C.

Objektorientēta paradigma valodā Objective-C

Objective-C pilnībā izmanto objektorientētu paradigmu , ļaujot strādāt ar klasēm, objektiem, mantošanu, iekapsulēšanu un polimorfismu. Katra klase var definēt instanču mainīgos, savas metodes un īpašības, un to var paplašināt, izmantojot apakšklases, lai mantotu un modificētu uzvedību.

Turklāt unikāla funkcija ir spēja dinamiski sūtīt ziņojumus objektiem, kas veicina ļoti elastīgu programmu izstrādi ar pielāgojamību izpildes laikā — ideja, kas ir mantota tieši no Smalltalk.

Ievērības cienīga ir arī iespēja organizēt kodu, izmantojot kategorijas , kas ļauj pievienot papildu funkcionalitāti esošajām klasēm, neveidojot apakšklases, un protokolus , kas ļauj definēt metožu līgumus, kurus klases var pieņemt, līdzīgi kā saskarnes citās valodās.

Kategorijas un paplašinājumi valodā Objective-C

Kategorijas ir viens no spēcīgākajiem rīkiem klases funkcionalitātes paplašināšanai, nemainot tās sākotnējo kodu vai neveidojot apakšklases. Tās ļauj pievienot papildu metodes jebkurai klasei, pat ja jums nav piekļuves tās ieviešanai, kas ir ārkārtīgi noderīgi lielu koda bāzu organizēšanai vai privātas funkcionalitātes ieviešanai.

  Kā ātri izmantot Markdown pakalpojumā GitHub un Reddit

Savukārt paplašinājumi (jeb “klases paplašinājumi”) kalpo privātu metožu un īpašību deklarēšanai pašas klases ieviešanā, tādējādi nodrošinot labāku iekšējo detaļu iekapsulēšanu un slēpšanu.

Protokoli programmā Objective-C

Protokoli darbojas kā abstrakti līgumi , kas definē metodes, kuras klases var pieņemt un ieviest. Tādējādi jebkura klase var norādīt savu atbilstību konkrētam protokolam un apņemties ieviest tā metodes. Tas nodrošina lielu elastību un palīdz izpildīt tādus modeļus kā deleģēšana, kas ir tik izplatīti iOS un macOS lietotņu izstrādē.

Piemēram, protokols var norādīt tādas metodes kā turnOnEngine o beNiceToSister:, un dažādas klases varētu pieņemt šos protokolus, ja tās ir ieinteresētas šajā funkcionalitātē.

Atmiņas pārvaldība: saglabāšana, atbrīvošana un ARC

Objective-C valodā atmiņas pārvaldība tradicionāli ir bijusi viens no lielākajiem izaicinājumiem programmētājiem. Pirms ARC ( automātiskās atsauces skaitīšanas ) parādīšanās bija nepieciešams manuāli kontrolēt katra objekta saglabāšanu un atbrīvošanu no atmiņas, kas palielināja atmiņas noplūdes un grūti atklājamu kļūdu risku.

Pamatcikls sastāv no:

  • Izveidojiet objektu (alloc).
  • Izmantojiet objektu.
  • Atlaidiet objektu (release o autorelease).

Ar ARC, kas tika iekļauts Xcode 4.2 un iOS 4, kompilators pats automātiski ievieto instrukcijas “retain” , “release” un “autorelease” , ievērojami vienkāršojot izstrādātāja darbu un pietuvinot Objective-C citu valodu pieredzei ar atkritumu savākšanu.

Īpašības un atribūti: piekļuves kontrole un atmiņa

the Īpašības programmā Objective-C ir deklarēti ar @property un tā pārvaldību pastiprina dažādi atribūti, kas kontrolē, kā katra vērtība tiek glabāta un tai piekļūst. Galvenie atribūti ir:

  • piešķirt: Piešķir vērtību tieši, nesaglabājot vai neatbrīvojot objektu (parasti izmanto primitīviem tipiem vai vājām atsaucēm).
  • saglabāt: Uztur spēcīgu atsauci uz objektu, palielinot skaitītāju katru reizi, kad tas tiek piešķirts.
  • kopija: Izveido piešķirtā objekta kopiju, kas ir noderīga teksta virknēm vai nemaināmiem objektiem.
  • vājš: Ieviests ar ARC, definē vāju atsauci, kas automātiski tiek iestatīta uz nil kad sākotnējais objekts tiek atbrīvots.
  • stiprs: Spēcīga atsauce nodrošina, ka tik ilgi, kamēr pastāv īpašība, objekts būs pieejams atmiņā.

Šī detalizācija ļauj izstrādātājiem optimizēt resursu patēriņu un izvairīties no atmiņas piekļuves kļūdām.

Salīdzinājums: Objective-C pret Swift

Kopš 2014. gada Apple ekosistēmas izstrādi raksturo Objective-C un Swift līdzāspastāvēšana . Abām valodām ir savas stiprās un vājās puses, un izvēle lielā mērā ir atkarīga no projekta veida un izstrādātāju komandas pieredzes.

Galvenās Objective-C priekšrocības ir šādas:

  • Tieša saderība ar C un C++: Tas ļauj apvienot imperatīvo un objektorientēto kodu, kas ir ļoti novērtēts lietojumprogrammās, kurām nepieciešama neapstrādāta veiktspēja.
  • Briedums un stabilitāte: Tā ir valoda, kas ir testēta gadiem ilgi, ar lielu kopienu un bagātīgu dokumentāciju.
  • Dinamisms: Tās ziņojumapmaiņas un refleksijas sistēma ļauj mainīt lietojumprogrammu darbību izpildes laikā.

Svifts, no savas puses, sniedz savu ieguldījumu:

  • Lielākas drošības garantijas: Pateicoties statiskajai rakstīšanai, kļūdu apstrādei un mūsdienīgai atmiņas pārvaldībai.
  • Skaidrāka un kodolīgāka sintakse: Tas atvieglo koda rakstīšanu un uzturēšanu, īpaši tiem, kas nav no C pasaules.
  • Mūsdienu instrumenti: Lielisks atbalsts vārdtelpām, interaktīvai izstrādei ar Playgrounds un funkcionāliem modeļiem.

Raugoties nākotnē, viss norāda uz Swift turpmāku popularitātes pieaugumu, taču Objective-C joprojām būs aktuāls lielos mantotos projektos un sadarbspējā ar vecākiem ietvariem.

Objective-C priekšrocības un trūkumi salīdzinājumā ar Swift

Ir vērts pārskatīt dažus galvenos punktus, kas var ietekmēt vienas vai otras valodas izvēli:

  • Mērķis-C:
    • Ļauj efektīvi strādāt ar C un C++ bibliotēkām.
    • Tas piedāvā dinamiskas funkcijas, piemēram, metožu mainīšanu, kas ļauj mainīt uzvedību izpildes laikā.
    • Savietojams ar esošajiem binārajiem ietvariem un trešo pušu bibliotēkām.
    • Tomēr tam ir maza vārdtelpa, kas lielos projektos var izraisīt konfliktus un grūti atkļūdojamas kļūdas.
    • Jaunajiem programmētājiem sintakse var šķist sarežģīta un novecojusi.
  • Ātra:
    • Statiskā rakstīšana un modernā sintakse palielina drošību un produktivitāti.
    • Paplašināts atbalsts funkcionāliem modeļiem un interaktīvai koda pārvaldībai, izmantojot Playgrounds.
    • Lēnāka kompilācija lielos projektos un zināma nestabilitāte moduļu formātos vai sadarbspējā ar C++.

Praktiskie pamati un koda piemēri

Tiem, kas vēl nav sākuši strādāt ar Objective-C, varētu būt noderīgi pārskatīt dažus praktiskus piemērus par tā izmantošanu reālos projektos. Šeit ir dažas galvenās struktūras un jēdzieni:

  CSS ietvars: pilnīgs ceļvedis, kā izvēlēties savam projektam vispiemērotāko

Klases un metožu deklarēšana

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

Šajā piemērā MyClass manto no NSObject , kas ir vairuma Cocoa objektu saknes klase.

Masīvu un vārdnīcu izmantošana

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

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

Cikli un vadības struktūras

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

Klasiskā atmiņas pārvaldība (bez ARC)

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

Saderība un atbalstītās platformas

Lai gan Objective-C ir neatdalāma no Apple ekosistēmas, tādas implementācijas kā GNUstep ļauj izstrādāt šo valodu citās platformās, tostarp Linux un Windows. Tomēr tās izmantošana ārpus macOS un iOS vidēm ir ļoti ierobežota un parasti saistīta ar nišas projektiem vai sadarbspēju ar mantotu kodu. Kas ir Objective-C?

Apple ietvaros Objective-C joprojām tiek atbalstīts visās modernajās macOS, iOS, iPadOS, tvOS un watchOS versijās, un tā ir dzīvotspējīga opcija gan Xcode, gan komandrindas rīkos.

Objective-C resursi un mācības

Tiem, kas vēlas apgūt vai uzlabot savas Objective-C prasmes, ir pieejams plašs materiālu, pamācību un tiešsaistes kursu klāsts. Sākot ar universitāšu platformām un tehniskajām apmācības skolām līdz video kanāliem un oficiālajai Apple dokumentācijai, mācīšanās ir vienkārša un daudzveidīga. Uzziniet, kā kļūt par veiksmīgu mobilo lietotņu izstrādātāju.

Starp visizplatītākajām apmācības iespējām ir:

  • Paskaidrojošie video.
  • E-grāmatas un praktiskas rokasgrāmatas.
  • Soli pa solim pamācības, gan teksta, gan video formātā.
  • Tiešsaistes izstrādātāju kopienas un tehniskie forumi.
  • Kursi specializētās platformās, sākot no pamata līdz pat padziļinātam līmenim.

Turklāt daudzas no šīm platformām piedāvā sertifikātus tiem, kas pabeidz apmācību programmas, kas var būt priekšrocība, meklējot darbu šajā nozarē.

Kāpēc šodien apgūt Objective-C?

Mūsdienās varētu šķist bezjēdzīgi mācīties Objective-C, it īpaši, ja jūsu galvenais mērķis ir uzsākt jaunus projektus. Tomēr tās apgūšana joprojām ir ļoti ieteicama, ja plānojat strādāt uzņēmumos ar mantotām koda bāzēm, uzturēt jau ražošanā esošas lietojumprogrammas vai ja jūs piesaista Apple platformu iekšējā darbība. Objective-C saderība ar Swift ļauj abām valodām pastāvēt līdzās vienā projektā, atvieglojot pakāpenisku lietojumprogrammu migrāciju, nevajadzot visu no jauna pārbūvēt.

Turklāt fakts, ka Objective-C joprojām ir tehnisks etalons daudzos iOS un macOS izstrādes aspektos, garantē tā atbilstību darba tirgū, īpaši vecākajiem amatiem un arhitektūras vai tehniskās vadības lomām.

Šajā ceļojumā jūs esat redzējuši, kā Objective-C valoda ir iezīmējusi pagrieziena punktu Apple programmatūras izstrādē un kā tās filozofija, kas balstīta uz C paplašināšanu un objektorientētu paradigmu iekļaušanu, ir ļāvusi izveidot stabilas, elastīgas un ļoti pielāgojamas lietojumprogrammas. Lai gan Swift popularitāte ir nedaudz mainījusi tās lietojumu, Objective-C apgūšana joprojām ir būtisks ieguvums jebkuram izstrādātājam, kurš vēlas viegli orientēties Apple ekosistēmā un risināt mūsdienu programmēšanas un lielu projektu uzturēšanas izaicinājumus. Neatkarīgi no tā, vai tas ir saderības apsvērumu, mantotu arhitektūru vai vienkārši tehniskas ziņkāres dēļ, Objective-C apgūšana paver durvis uz patērētāju skaitļošanas vēsturi un tagadni.

mantojums OOP
Saistītais raksts:
Visbiežāk izmantotās programmēšanas valodas 2024. gadā