Het Cocoa-platform wordt nu vertegenwoordigd door vier afzonderlijke smaken, of subplatforms, met de macOS, iOS/iPadOS, watchOS en tvOS SDK’s. Elke SDK bestaat uit individuele bibliotheken die gewoonlijk “Frameworks” worden genoemd.

Aan de Objective-C-kant is elk framework een bundel met de extensie .framework die zowel binaire (.dylib, wat vergelijkbaar is met .dll op Windows) als Objective-C-headerbestanden bevat. Voor Elements wordt elk framework in de SDK gerepresenteerd door een .fx bestand dat alle metadata van de headers samenvoegt om ze gemakkelijker en sneller te kunnen gebruiken door de Elements compiler.

Elements wordt geleverd met vooraf gemaakte .fx bestanden voor alle frameworks in de standaard Apple SDK’s die worden geleverd met de nieuwste versies van de vier SDK’s (en ook voor bepaalde oudere versies).

Je kunt een volledige lijst van alle frameworks vinden in de lijsten hieronder. U zult zien dat veel van de raamwerken worden gedeeld door sommige of zelfs alle SDK’s, waardoor een enorme bibliotheek van klassen waarmee u code kunt schrijven die kan worden gecompileerd voor en gedeeld tussen alle subplatforms, terwijl elke SDK ook een aanzienlijk aantal raamwerken biedt die platform-specifiek zijn.

  • Alle macOS SDK Frameworks
  • Alle iOS SDK Frameworks
  • Alle tvOS SDK Frameworks
  • Alle watchOS SDK Frameworks
  • Alle Mac Catalyst Frameworks

Laten we een aantal van deze frameworks eens in meer detail bekijken.

Foundation

Ongetwijfeld het meest kritische framework voor een Cocoa programma is het Foundation framework, omdat – zoals de naam al aangeeft – het een groot deel van de foundation classes levert die een programma maakt op de Objective-C runtime. Dit omvat de meeste van de standaard klassen met NS* voorvoegsels (afgezien van GUI klassen, meer daarover hieronder), van eenvoudige en essentiële types zoals NSString, NSArray en dergelijke, tot klassen die toegang bieden tot de kern OS diensten, zoals NSFileManager voor schijf toegang, NSNotificationCenter voor het werken met meldingen, NSURL* klassen om te werken met netwerk verzoeken, en nog veel meer.

Lees meer op over Foundation.fx. Het is beschikbaar op alle Cocoa sub-platforms.

User Interfaces: AppKit vs UIKit vs WatchKit.

De overeenkomsten tussen de iOS, watchOS, tvOS en macOS SDK’s vervliegen als we het rijk van de ontwikkeling van de gebruikersinterface betreden – en met goede reden, omdat de UI voor applicaties op deze platforms enorm verschilt. Om deze reden bieden de SDK’s drie zeer verschillende raamwerken:

AppKit is alleen opgenomen in de macOS SDK, en biedt alle klassen en besturingselementen die u nodig hebt voor het maken van Mac-toepassingen. Om legacy-redenen hebben de meeste van deze klassen een gemeenschappelijke naamvoorvoegsel met Foundation en beginnen ze met NS*, en klassen waarmee u zult werken zijn onder andere NSWindow, NSButton, NSTableView en dergelijke.

UIKit is het raamwerk dat zowel iOS als tvOS gebruiken om hun UI’s te bieden, en de klassen beginnen met een voorvoegsel UI*. Veel concepten worden gedeeld door AppKit en UIKit, maar de klassen zijn verschillend &mdash sommige meer dan andere. Bijvoorbeeld, beide frameworks hebben een klasse om kleur te vertegenwoordigen (NSColor en UIColor, respectievelijk) die zeer vergelijkbaar werken, terwijl andere concepten vrij uniek zijn voor UIKit, zoals het gebruik van voorgedefinieerde controllers zoals UINavigationController en UITabBarController. UIKit heeft ook verschillen (sommige klein, sommige zeer belangrijk) tussen iOS en tvOS.

WatchKit, ten slotte, wordt gebruikt door watchOS om UI te bouwen voor de Apple Watch in termen van Apps, Glances en Notifications. (Er is ook ClockKit voor het bouwen van watch face-complicaties.) WatchKit gebruikt een andere en meer eenvoudige benadering voor UI-ontwerp dan UIKit.

De verschillende frameworks dwingen de ontwikkelaar om de UI van hun applicatie vanaf de grond opnieuw te bekijken en te ontwerpen, maar dat is een goede zaak, omdat de UI-paradigma’s op elk platform fundamenteel verschillend zijn, waarbij UIKit grotendeels wordt aangedreven door aanraking (zowel direct als via de Siri-afstandsbediening op Apple TV) en AppKit wordt gebruikt voor meer traditionele muis + toetsenbordstijlinteractie.

Maar veel van de concepten achter de frameworks zijn vergelijkbaar, en je zult merken dat het leren maken van applicaties op de ene in veel gevallen gemakkelijk zal vertalen naar de andere. Bijvoorbeeld, alle drie de frameworks omarmen het Model-View-Controller paradigma voor het scheiden van de eigenlijke UI en de “controller” klasse die het aanstuurt. Dit wordt duidelijk op het moment dat je begint met het maken van je eerste UI, omdat in plaats van je eigen Window of View class te implementeren (vanwege de enkel-venster aard van iOS, UIKit applicaties denken meestal in termen van views, niet van windows) in code zoals je zou doen in .NET of Delphi, implementeer je een Window (of View) ”Controller”.

Andere onderwerpen op deze docs site, zoals het Werken met XIB Bestanden artikel bespreken deze concepten in meer detail.

Lees meer over AppKit.fx, UIKit.fx en WatchKit.fx.

Note: Een Cocoa.framework (en bijpassende Cocoa.fx) bestaat in de macOS SDK. Dit framework is slechts een bundel van Foundation en AppKit. Het moet niet worden verward met ons algemene gebruik van de term “Cocoa” om te verwijzen naar het gehele platform.

Meer specifieke UI-raamwerken

Beide SDK’s bevatten extra raamwerken die voortbouwen op AppKit en UIKit om toegang te bieden tot meer geavanceerde of specifieke UI-elementen.

Bijv.:

  • De macOS, iOS en watchOS SDK’s bevatten MapKit, dat klassen biedt om Apple Maps in uw toepassing te integreren, zowel om kaarten weer te geven, als om met geografische gegevens te werken. (MapKit werkt ook nauw samen met CoreLocation, dat hieronder wordt behandeld.)
  • Zowel iOS als macOS bevatten het nieuwe Social-framework, waarmee je applicatie UI kan tonen voor het delen van content op Twitter, Facebook, Sina Weibo en andere sociale netwerken.
  • iOS biedt het MessageUI-framework voor interactie met e-mail en laat de gebruiker rechtstreeks vanuit je applicatie e-mails versturen.
  • SpriteKit, nieuw in zowel iOS 7.0 als OS X 10.9 en SceneKit (nieuw in OS X 10.9 en ook in iOS vanaf versie 8.0) maakt het eenvoudiger om geweldige game UI te maken.

System Services

Er zijn ook een heleboel frameworks die uw applicatie laten interacteren met system services, zoals:

  • StoreKit om in-app aankopen te verwerken voor iOS en Mac App Store apps.
  • Security om toegang te krijgen tot de system key chain, wachtwoorden en certificaten op te slaan en op te halen, etc.
  • CoreLocation om te werken met GPS (en Wifi-gebaseerde locatiediensten).
  • CoreAudio en CoreVideo om te werken met audio- en videomedia en deze af te spelen.
  • Addressbook en EventKit om te werken met de Contacten en Agenda’s van gebruikers (naast EventKitUI op iOS).
  • GameKit om je games te integreren met Game Center.

(allemaal gedeeld tussen alle platforms) en meer.

Lager-niveau Frameworks

Als u verder wilt gaan dan alleen AppKit/UIKit voor uw gebruikersinterface-ontwikkeling, bieden beide SDK’s ook frameworks waarmee u uw handen vuiler kunt maken en kunt werken met de UI op lagere niveaus.

  • CoreGraphics is de basis van alle grafische rendering in de core UI frameworks, en u kunt en zult ermee werken bij het maken van uw eigen aangepaste controls.
  • QuartzCore bevat ”CoreAnimation”, de bibliotheek die verfijnde maar eenvoudige toegang biedt tot het toevoegen van animatie aan uw applicaties – een must voor elke moderne iOS en Mac app.
  • GLKit laat je OpenGL gebaseerde elementen toevoegen aan je UIKit/AppKit applicaties, terwijl de lower-level OpenGL (macOS) en OpenGLES (iOS en tvOS) frameworks je volledige toegang geven tot de ruwe OpenGL APIs.

rtl.fx, libToffee.fx, libSwift.fx

Naast de kern SDK frameworks, biedt Elements drie extra .fx bestanden die cruciaal zijn voor zijn werking.

  • rtl.fx is nog fundamenteler dan het Foundation-framework, en bevat alle low-level C-stijl API’s die de kern vormen van het UNIX-systeem van macOS, iOS, watchOS en tvOS; het bevat ook bibliotheken zoals Grand Central Dispatch en CommonCrypto. In wezen vertegenwoordigt rtl.fx de meeste headers in /usr/include.
  • libToffee.fx bevat helpertypen die van cruciaal belang zijn voor de Elements-compiler zelf. Het bevat bijvoorbeeld interne ondersteuning voor Future Types, generieke NSArray<T> en NSDictionary<T> types, LINQ ondersteuning, en meer.
  • libSwift.fx biedt extra types en functies die specifiek zijn voor de Swift taal.

Elke Cocoa applicatie zal automatisch verwijzen naar rtl.fx, of het nu expliciet wordt vermeld in de References of niet. Verwijzingen naar libToffee.fx en libSwift.fx zijn optioneel; de compiler zal waarschuwen/fouten geven als functies worden gebruikt die een verwijzing naar libToffee.fx of libSwift.fx vereisen en er niet naar wordt verwezen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.