Objective‑C

Die Pro­gram­mier­spra­che Objective‑C (ObjC) kom­bi­niert die Leis­tungs­fä­hig­keit von C mit den objekt­ori­en­tier­ten Fähig­kei­ten von Small­talk und bie­tet so eine fle­xi­ble und dyna­mi­sche Pro­gram­mier­um­ge­bung. Beson­ders bemer­kens­wert ist die Fähig­keit, Nach­rich­ten an Objek­te zu sen­den, die mög­li­cher­wei­se nicht dar­auf reagie­ren kön­nen, was durch das Kon­zept des Mes­sa­ge For­war­ding gelöst wird.

Ein wei­te­rer inter­es­san­ter Aspekt von Objective‑C ist die dyna­mi­sche Typi­sie­rung. Dies ermög­licht es Ent­wick­lern, fle­xi­blen und erwei­ter­ba­ren Code zu schrei­ben, indem sie Nach­rich­ten an Objek­te sen­den kön­nen, deren Schnitt­stel­len die­se Nach­rich­ten nicht expli­zit defi­nie­ren. Dadurch las­sen sich Design­mus­ter wie das Beob­ach­ter- oder Pro­xy-Mus­ter effi­zi­ent umset­zen.

Was ist Objective‑C (ObjC)?

Objective‑C (ObjC) ist eine objekt­ori­en­tier­te Pro­gram­mier­spra­che, die von Brad Cox und Tom Love ent­wi­ckelt wur­de. Sie kom­bi­niert die Syn­tax und pri­mi­ti­ven Daten­ty­pen der Pro­gram­mier­spra­che C mit den Kon­zep­ten der objekt­ori­en­tier­ten Pro­gram­mie­rung von Small­talk.

Wann wur­de Objective‑C ver­öf­fent­licht?

Objective‑C wur­de erst­mals 1984 ver­öf­fent­licht. Die Pro­gram­mier­spra­che ent­stand aus dem Bedürf­nis her­aus, die Mög­lich­kei­ten von C um objekt­ori­en­tier­te Funk­tio­nen zu erwei­tern. Brad Cox und Tom Love ent­wi­ckel­ten die­se Erwei­te­rung, um die Wie­der­ver­wend­bar­keit von Soft­ware­kom­po­nen­ten zu ver­bes­sern.

Wird Objective‑C wei­ter­ent­wi­ckelt?

Obwohl Swift seit 2014 die bevor­zug­te Pro­gram­mier­spra­che für Apple-Ent­wick­ler ist, wird Objective‑C wei­ter­hin in vie­len bestehen­den Anwen­dun­gen und Frame­works ver­wen­det. Vie­le gro­ße Unter­neh­men nut­zen noch immer Code in Objective‑C, der nicht neu geschrie­ben wird. Apple unter­stützt und för­dert Objective‑C nach wie vor, was zeigt, dass es wei­ter­hin rele­vant bleibt.

Apple för­dert wei­ter­hin die Ver­wen­dung von Objective‑C durch regel­mä­ßi­ge Updates im Rah­men sei­ner Ent­wick­lungs­um­ge­bun­gen wie Xcode.

War­um Objective‑C von Apple?

Apple ver­wen­det Objective‑C, weil es die de fac­to-Spra­che für die Ent­wick­lung von Mac OS X war. Als Ste­ve Jobs Apple ver­ließ, um NeXT zu grün­den, ent­wi­ckel­te er Objective‑C als eine Spra­che, die C++ ver­mied und vie­le sei­ner Schwä­chen besei­tig­te. Die­se Spra­che wur­de dann für die Ent­wick­lung von NeXT­STEP ver­wen­det, das spä­ter zu Mac OS X wur­de. Als Apple NeXT über­nahm, wur­de Objective‑C auch für die Ent­wick­lung von iOS und ande­ren Apple-Pro­duk­ten ver­wen­det.

Objective‑C ist eine strik­te Ober­men­ge von C und bie­tet vie­le Vor­tei­le gegen­über C++. Es ermög­licht objekt­ori­en­tier­te Pro­gram­mie­rung und behält gleich­zei­tig die Leis­tung und Fle­xi­bi­li­tät von C bei. Dies macht es beson­ders geeig­net für die Ent­wick­lung kom­ple­xer Soft­ware­lö­sun­gen wie Betriebs­sys­te­me und Anwen­dun­gen.

  • Objekt­ori­en­tier­te Pro­gram­mie­rung: Erlaubt effi­zi­en­te Imple­men­tie­rung von Design­mus­tern.
  • Dyna­mi­sche Typi­sie­rung: Ermög­licht fle­xi­blen Code.
  • Kom­pa­ti­bi­li­tät mit C: Nutzt bestehen­de C‑Bibliotheken naht­los.
  • Leis­tung: Bei­be­hal­tung der Geschwin­dig­keit und Effi­zi­enz von C.

Wel­che Eigen­schaf­ten hat die Objective‑C Pro­gram­mier­spra­che?

Objective‑C zeich­net sich durch meh­re­re mar­kan­te Eigen­schaf­ten aus, die es zu einer ein­zig­ar­ti­gen und leis­tungs­fä­hi­gen Pro­gram­mier­spra­che machen.

Objekt­ori­en­tiert

Objective‑C ist eine objekt­ori­en­tier­te Spra­che. Sie ver­wen­det Klas­sen und Objek­te, um Struk­tu­ren und Ver­hal­tens­wei­sen zu model­lie­ren. Dies ermög­licht Ent­wick­lern, kom­ple­xe Soft­ware­lö­sun­gen effi­zi­ent zu erstel­len.

Erwei­te­rung von C

Objective‑C erwei­tert die C‑Programmiersprache um objekt­ori­en­tier­te Ele­men­te. Die Syn­tax bleibt größ­ten­teils gleich, wodurch Ent­wick­ler mit C‑Kenntnissen schnell in Objective‑C ein­stei­gen kön­nen.

Small­talk-ähn­li­che Nach­rich­ten

Objective‑C nutzt eine Small­talk-ähn­li­che Syn­tax für das Ver­sen­den von Nach­rich­ten. Die­se Syn­tax ermög­licht es, Metho­den­auf­ru­fe fle­xi­bel und dyna­misch zu gestal­ten.

Gar­ba­ge Coll­ec­tion

Ab Ver­si­on 2.0 unter­stützt Objective‑C eine optio­na­le Gar­ba­ge Coll­ec­tion. Dies erleich­tert das Spei­cher-Manage­ment und redu­ziert Spei­cher­lecks in Anwen­dun­gen.

Unter­stüt­zung von Blocks

Objective‑C unter­stützt Blocks, eine Art Clo­sures. Blocks ermög­li­chen es, Code­blö­cke als Varia­blen zu behan­deln und sie an Funk­tio­nen zu über­ge­ben oder zurück­zu­ge­ben.

Kate­go­rien zur Erwei­te­rung von Klas­sen

Mit Kate­go­rien kön­nen Ent­wick­ler den Metho­den­satz einer Klas­se nach­träg­lich erwei­tern, ohne deren ursprüng­li­chen Imple­men­tie­rungs­code ändern zu müs­sen. Dies för­dert die Wie­der­ver­wend­bar­keit und Fle­xi­bi­li­tät des Codes.

Dyna­mi­sche Typi­sie­rung

Objective‑C ver­wen­det dyna­mi­sche Typi­sie­rung. Dadurch kön­nen Nach­rich­ten an Objek­te gesen­det wer­den, deren Schnitt­stel­len die­se Nach­rich­ten nicht expli­zit defi­nie­ren. Dies ermög­licht fle­xi­blen und erwei­ter­ba­ren Code.

Wie unter­schei­den sich Swift und Objective‑C?

Swift wur­de ent­wi­ckelt, um eini­ge der Ein­schrän­kun­gen von Objective‑C zu über­win­den und bie­tet daher ver­schie­de­ne Vor­tei­le:

  1. Syn­tax: Swift hat eine moder­ne­re Syn­tax im Ver­gleich zur klas­si­schen Syn­tax von Objective‑C.
  2. Sicher­heit: Swift bie­tet mehr Sicher­heits­funk­tio­nen wie Optio­nals, die null-siche­re Pro­gram­mie­rung för­dern.
  3. Leis­tung: Swift kann oft schnel­ler als Objective‑C sein auf­grund ver­schie­de­ner Opti­mie­run­gen.
  4. Spei­cher­ver­wal­tung: Swift ver­wen­det Auto­ma­tic Refe­rence Coun­ting (ARC) für alle Spei­cher­ope­ra­tio­nen; Objec­ti­ve-Cs ARC ist optio­nal.
  5. Ein­fach­heit: Swift ver­ein­facht vie­le Kon­zep­te der Pro­gram­mie­rung im Ver­gleich zu den kom­ple­xe­ren Struk­tu­ren in Objective‑C.

Trotz die­ser Unter­schie­de bleibt Objective‑C rele­vant für bestehen­de Anwen­dun­gen und Frame­works inner­halb des Apple-Öko­sys­tems.

Las­sen sich mit Objective‑C Cross-Platt­form-Apps ent­wi­ckeln?

Objective‑C ist haupt­säch­lich für die Ent­wick­lung von Anwen­dun­gen auf Apple-Platt­for­men wie macOS und iOS kon­zi­piert. Den­noch gibt es Tech­ni­ken, um platt­form­über­grei­fen­de Apps zu erstel­len.

Ent­wick­ler kön­nen die fol­gen­den Tech­ni­ken anwen­den, um die Platt­form­un­ab­hän­gig­keit zu erhö­hen:

  1. Modu­la­re Archi­tek­tur: Die platt­form­spe­zi­fi­schen Tei­le der Anwen­dung las­sen sich in sepa­ra­te Modu­le aus­la­gern. Gemein­sa­me Funk­tio­nen kön­nen in C++- oder C‑Bibliotheken imple­men­tiert wer­den.
  2. Frame­works nut­zen: Frame­works wie Qt ermög­li­chen das Ent­wi­ckeln von Anwen­dun­gen für ver­schie­de­ne Platt­for­men durch eine ein­heit­li­che API.

Vor­tei­le von Kate­go­rien und Erwei­te­rungs­me­tho­den

Objective‑C erlaubt das Hin­zu­fü­gen von Metho­den zu einer Klas­se mit­tels Kate­go­rien, ohne den Imple­men­tie­rungs­code zu besit­zen. Dies erhöht die Fle­xi­bi­li­tät im Ent­wick­lungs­pro­zess. In C exis­tie­ren ähn­li­che Kon­zep­te als Erwei­te­rungs­me­tho­den, wel­che sta­ti­sche Metho­den hin­zu­fü­gen.

For­war­ding Mecha­nis­mus

Der For­war­ding Mecha­nis­mus in Objective‑C ermög­licht es Objek­ten, Nach­rich­ten wei­ter­zu­lei­ten, falls sie nicht direkt dar­auf reagie­ren kön­nen. Ent­wick­ler über­schrei­ben dazu die forwardInvocation: Metho­de der NSObject Klas­se.

Wel­che Apps wur­den mit Objective‑C ent­wi­ckelt?

Zahl­rei­che bekann­te Anwen­dun­gen wur­den mit Objective‑C ent­wi­ckelt, dar­un­ter vie­le der Stan­dard-Apps auf iPho­nes und Macs. Bei­spie­le sind der Safa­ri-Brow­ser, die Mail-App und der Kalen­der. Auch Dritt­an­bie­ter-Apps wie Insta­gram und Uber began­nen ihre Ent­wick­lung in Objective‑C, bevor sie teil­wei­se oder voll­stän­dig auf Swift umstie­gen.

  • Kontakt

  • BlueBranch GmbH
    Albert-Schweitzer-Straße 20
    91080 Uttenreuth

  • Telefon: +49 1514 6659529
    E-Mail: hello@bluebranch.de