La piattaforma Cocoa è ora rappresentata da quattro sapori separati, o sottopiattaforme, con gli SDK macOS, iOS/iPadOS, watchOS e tvOS. Ogni SDK è composto da singole librerie, solitamente denominate “Frameworks”.

Sul lato Objective-C, ogni framework è un bundle con estensione .framework che contiene sia file binari (.dylib, che è paragonabile a .dll su Windows) che file header Objective-C. Per Elements, ogni framework nell’SDK è rappresentato da un file .fx che aggrega tutti i metadati dagli header per renderli più facili e veloci da consumare per il compilatore Elements.

Elements viene fornito con file .fx precostituiti per tutti i framework negli SDK standard di Apple che vengono forniti con le ultime versioni dei quattro SDK (così come per alcune versioni precedenti).

Puoi trovare una lista completa di tutti i framework negli elenchi qui sotto. Vedrete che molti dei framework sono condivisi da alcuni o anche da tutti gli SDK, fornendo una vasta libreria di classi che vi permettono di scrivere codice che può essere compilato e condiviso tra tutte le sottopiattaforme, mentre ogni SDK fornisce anche un numero significativo di framework che sono specifici della piattaforma.

  • Tutti i MacOS SDK Frameworks
  • Tutti gli iOS SDK Frameworks
  • Tutti i tvOS SDK Frameworks
  • Tutti i watchOS SDK Frameworks
  • Tutti i Mac Catalyst Frameworks

Diamo uno sguardo ad alcuni di questi frameworks più in dettaglio.

Foundation

Probabilmente il framework più critico per qualsiasi applicazione Cocoa è il Foundation framework, perché – come il nome implica – fornisce gran parte delle classi di base che compongono un’applicazione sul runtime Objective-C. Questo include la maggior parte delle classi standard con prefisso NS* (a parte le classi GUI, di cui parleremo più avanti), dai tipi semplici ed essenziali come NSString, NSArray e simili, alle classi che forniscono l’accesso ai servizi di base del sistema operativo, come NSFileManager per l’accesso al disco, NSNotificationCenter per lavorare con le notifiche, NSURL* classi per lavorare con le richieste di rete, e molte molte altre ancora.

Leggi di più su Foundation.fx. È disponibile su tutte le sottopiattaforme Cocoa.

Interfacce utente: AppKit vs. UIKit vs. WatchKit.

Le somiglianze tra gli SDK di iOS, watchOS, tvOS e macOS si dissolvono quando entriamo nel regno dello sviluppo dell’interfaccia utente – e per una buona ragione, poiché l’interfaccia utente per le applicazioni su queste piattaforme è molto diversa. Per questo motivo, gli SDK forniscono tre framework ben distinti:

AppKit è incluso solo nell’SDK di macOS, e fornisce tutte le classi e i controlli necessari per creare applicazioni Mac. Per ragioni di eredità, la maggior parte di queste classi condividono un prefisso di denominazione comune con Foundation e iniziano con NS*, e le classi con cui lavorerete includono NSWindow, NSButton, NSTableView e simili.

UIKit è il framework che sia iOS che tvOS usano per fornire le loro UI, e le sue classi iniziano con un prefisso UI*. Molti concetti sono condivisi da AppKit e UIKit, ma le classi sono diverse &mdash alcune più di altre. Per esempio, entrambi i framework hanno una classe per rappresentare il colore (NSColor e UIColor, rispettivamente) che funziona in modo molto simile, mentre altri concetti sono piuttosto unici per UIKit, come il suo uso di controllori predefiniti come UINavigationController e UITabBarController. UIKit ha anche delle differenze (alcune minori, altre molto significative) tra iOS e tvOS.

WatchKit, infine, è usato da watchOS per costruire la UI per l’Apple Watch in termini di App, Glance e Notifiche. (WatchKit utilizza un approccio diverso e più semplice per la progettazione dell’UI rispetto a UIKit.

I diversi framework costringono lo sviluppatore a ripensare e progettare l’UI della propria applicazione da zero, ma questa è una buona cosa, perché i paradigmi dell’UI su ogni piattaforma sono fondamentalmente diversi, con UIKit che è in gran parte guidato dal tocco (sia diretto che tramite il telecomando Siri su Apple TV) e AppKit che viene utilizzato per l’interazione più tradizionale stile mouse e tastiera.

Ma molti dei concetti dietro i framework sono simili, e scoprirete che imparare a creare applicazioni su uno di essi in molti casi si tradurrà facilmente nell’altro. Per esempio, tutti e tre i framework abbracciano il paradigma Model-View-Controller per separare l’effettiva UI dalla classe “controller” che la guida. Questo diventa evidente nel momento in cui iniziate a creare la vostra prima UI, perché piuttosto che implementare la vostra classe Window o View (a causa della natura a finestra singola di iOS, le applicazioni UIKit pensano principalmente in termini di viste, non di finestre) nel codice come fareste in .NET o Delphi, si implementa un ”Controller” di Window (o View).

Altri argomenti su questo sito docs, come l’articolo Working with XIB Files discutono questi concetti in modo più dettagliato.

Leggi di più su AppKit.fx, UIKit.fx e WatchKit.fx.

Nota: Un Cocoa.framework (e corrispondente Cocoa.fx) esiste nel macOS SDK. Questo framework è semplicemente un insieme di Foundation e AppKit. Non deve essere confuso con il nostro uso generale del termine “Cocoa” per riferirsi all’intera piattaforma.

More Specific UI Frameworks

Entrambi gli SDK contengono ulteriori frameworks che costruiscono sopra AppKit e UIKit per fornire accesso a elementi UI più avanzati o specifici.

Per esempio:

  • Gli SDK di macOS, iOS e watchOS contengono MapKit, che fornisce classi per integrare Apple Maps nella vostra applicazione, sia per mostrare mappe, sia per lavorare con i dati geografici. (MapKit lavora anche in stretta collaborazione con CoreLocation, coperto di seguito.)
  • Sia iOS che macOS contengono il nuovo framework Social che permette alla vostra applicazione di mostrare UI per condividere contenuti su Twitter, Facebook, Sina Weibo e altri social network.
  • iOS fornisce il framework MessageUI per interagire con la posta elettronica e permettere all’utente di inviare e-mail direttamente dalla vostra applicazione.
  • SpriteKit, nuovo sia in iOS 7.0 che in OS X 10.9 e SceneKit (nuovo in OS X 10.9 e anche in iOS a partire dalla versione 8.0) rende più facile creare grandi UI di gioco.

Servizi di sistema

C’è anche una serie di framework che permettono alla tua applicazione di interagire con i servizi di sistema, come:

  • StoreKit per gestire gli acquisti in-app per le applicazioni iOS e Mac App Store.
  • Sicurezza per accedere alla catena di chiavi di sistema, memorizzare e recuperare password e certificati, ecc.
  • CoreLocation per lavorare con GPS (e servizi di localizzazione basati su Wifi).
  • CoreAudio e CoreVideo per lavorare e riprodurre media audio e video.
  • Rubrica e EventKit per lavorare con contatti e calendari degli utenti (insieme a EventKitUI su iOS).
  • GameKit per integrare i tuoi giochi con Game Center.

(tutto condiviso tra tutte le piattaforme) e altro.

Quadri di livello inferiore

Se volete andare oltre AppKit/UIKit per il vostro sviluppo dell’interfaccia utente, entrambi gli SDK forniscono anche dei quadri che vi permettono di sporcarvi le mani e lavorare con l’UI a livelli più bassi.

  • CoreGraphics è il fondamento di tutto il rendering grafico nei framework UI di base, e potete e lavorerete con esso quando creerete i vostri controlli personalizzati.
  • QuartzCore contiene ”CoreAnimation”, la libreria che fornisce un accesso sofisticato ma facile per aggiungere animazioni alle vostre applicazioni – un must per ogni moderna app iOS e Mac.
  • GLKit vi permette di aggiungere elementi basati su OpenGL alle vostre applicazioni UIKit/AppKit, mentre i framework OpenGL (macOS) e OpenGLES (iOS e tvOS) di livello inferiore vi danno pieno accesso alle API OpenGL grezze.

rtl.fx, libToffee.fx, libSwift.fx

Oltre ai framework SDK di base, Elements fornisce tre file aggiuntivi .fx che sono fondamentali per il suo funzionamento.

  • rtl.fx è ancora più fondamentale del framework Foundation, e contiene tutte le API di basso livello in stile C che costituiscono il nucleo del sistema UNIX di macOS, iOS, watchOS e tvOS; contiene anche librerie come Grand Central Dispatch e CommonCrypto. Essenzialmente, rtl.fx rappresenta la maggior parte delle intestazioni in /usr/include.
  • libToffee.fx contiene tipi helper che sono cruciali per il compilatore Elements stesso. Per esempio, contiene il supporto interno per i Future Types, i tipi generici NSArray<T> e NSDictionary<T>, il supporto LINQ e altro ancora.
  • libSwift.fx fornisce ulteriori tipi e funzioni specifiche per il linguaggio Swift.

Ogni applicazione Cocoa farà automaticamente riferimento a rtl.fx, che sia esplicitamente elencato nei riferimenti o meno. I riferimenti a libToffee.fx e libSwift.fx sono opzionali; il compilatore emetterà un avviso/errore se vengono usate funzioni che richiedono un riferimento a libToffee.fx o libSwift.fx ed esse non sono referenziate.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.