Platforma Cocoa este acum reprezentată de patru arome separate, sau subplatforme, cu SDK-urile macOS, iOS/iPadOS, watchOS și tvOS. Fiecare SDK este alcătuit din biblioteci individuale, denumite de obicei „Frameworks”.
Pe partea de Objective-C, fiecare framework este un pachet cu extensia .framework
care conține atât fișiere binare (.dylib
, care este comparabil cu .dll
pe Windows), cât și fișiere de antet Objective-C. Pentru Elements, fiecare cadru din SDK este reprezentat de un fișier .fx care agregă toate metadatele din anteturi pentru a le face mai ușor și mai rapid de consumat de compilatorul Elements.
Elements vine cu fișiere .fx
pre-create pentru toate cadrele din SDK-urile standard Apple care sunt livrate cu cele mai recente versiuni ale celor patru SDK-uri (precum și pentru anumite versiuni mai vechi).
Puteți găsi o listă completă a tuturor cadrelor în listele de mai jos. Veți vedea că multe dintre cadre sunt partajate de unele sau chiar de toate SDK-urile, oferind o bibliotecă vastă de clase care vă permit să scrieți cod care poate fi compilat pentru și partajat între toate subplatformele, în timp ce fiecare SDK oferă, de asemenea, un număr semnificativ de cadre care sunt specifice fiecărei platforme.
- Toate cadrele SDK pentru macOS
- Toate cadrele SDK pentru iOS
- Toate cadrele SDK pentru tvOS
- Toate cadrele SDK pentru watchOS
- Toate cadrele SDK pentru Mac Catalyst
Să aruncăm o privire mai detaliată asupra unora dintre aceste cadre.
Foundation
Probabil cel mai critic cadru pentru orice aplicație Cocoa este cadrul Foundation, deoarece – așa cum sugerează și numele – oferă o mare parte din clasele de fundație care alcătuiesc o aplicație pe timpul de execuție Objective-C. Acesta include majoritatea claselor standard cu prefixul NS*
(în afară de clasele GUI, mai multe despre acestea mai jos), de la tipuri simple și esențiale, cum ar fi NSString
, NSArray
și altele asemenea, până la clase care oferă acces la serviciile de bază ale sistemului de operare, cum ar fi NSFileManager
pentru accesarea discului, NSNotificationCenter
pentru lucrul cu notificările, clasele NSURL*
pentru lucrul cu solicitările de rețea și multe multe altele.
Citește mai multe la aproximativ Foundation.fx
. Este disponibil pe toate subplatformele Cocoa.
Interfețe utilizator: AppKit vs. UIKit vs. WatchKit.
Similitudinile dintre SDK-urile iOS, watchOS, tvOS și macOS se risipesc pe măsură ce intrăm pe tărâmul dezvoltării interfeței cu utilizatorul – și pe bună dreptate, deoarece interfața cu utilizatorul pentru aplicațiile de pe aceste platforme este extrem de diferită. Din acest motiv, SDK-urile oferă trei cadre foarte distincte:
AppKit
este inclus doar în SDK-ul macOS și oferă toate clasele și controalele de care aveți nevoie pentru crearea de aplicații Mac. Din motive de moștenire, majoritatea acestor clase au un prefix de denumire comun cu Foundation și încep cu NS*
, iar clasele cu care veți lucra includ NSWindow
, NSButton
, NSTableView
și altele asemenea.
UIKit
este cadrul pe care atât iOS, cât și tvOS îl folosesc pentru a furniza interfețele de utilizare, iar clasele sale încep cu prefixul UI*
. Multe concepte sunt împărtășite de AppKit și UIKit, dar clasele sunt diferite &mdash unele mai mult decât altele. De exemplu, ambele cadre au o clasă pentru a reprezenta culoarea (NSColor
și, respectiv, UIColor
) care funcționează foarte asemănător, în timp ce alte concepte sunt destul de unice pentru UIKit, cum ar fi utilizarea controlorilor predefiniți precum UINavigationController
și UITabBarController
. UIKit are, de asemenea, diferențe (unele minore, altele foarte semnificative) între iOS și tvOS.
WatchKit
, în cele din urmă, este utilizat de watchOS pentru a construi interfața de utilizare pentru Apple Watch în ceea ce privește aplicațiile, Glances și notificările. (Există, de asemenea, ClockKit
pentru construirea de Complicații pentru cadranul ceasului.) WatchKit utilizează o abordare diferită și mai simplă pentru proiectarea UI decât UIKit.
Cadrele diferite forțează dezvoltatorul să regândească și să proiecteze UI-ul aplicației sale de la zero, dar acesta este un lucru bun, deoarece paradigmele UI de pe fiecare platformă sunt fundamental diferite, UIKit fiind în mare parte axat pe atingere (atât direct, cât și prin intermediul Siri Remote pe Apple TV), iar AppKit fiind utilizat pentru o interacțiune mai tradițională de tip mouse+tastatură.
Dar o mulțime de concepte din spatele cadrelor sunt similare și veți descoperi că învățarea creării de aplicații pe unul dintre ele se va transpune în multe cazuri cu ușurință pe celălalt. De exemplu, toate cele trei cadre îmbrățișează paradigma Model-View-Controller pentru a separa interfața de utilizare efectivă de clasa „controler” care o conduce. Acest lucru devine evident în momentul în care începeți să vă creați prima interfață de utilizator, deoarece, în loc să vă implementați propria clasă Window sau View (din cauza naturii de fereastră unică a iOS, aplicațiile UIKit gândesc în principal în termeni de vizualizări, nu de ferestre) în cod, așa cum ați face în .NET sau Delphi, implementați un ”Controller” de fereastră (sau vizualizare).
Alte subiecte de pe acest site de documente, cum ar fi articolul Working with XIB Files (Lucrul cu fișiere XIB), discută aceste concepte mai detaliat.
Citește mai multe la aproximativ AppKit.fx
, UIKit.fx
și WatchKit.fx
.
Nota: Un Cocoa.framework
(și un Cocoa.fx
corespunzător) există în macOS SDK. Acest cadru este pur și simplu un pachet de Foundation și AppKit. Nu trebuie confundat cu utilizarea noastră generală a termenului „Cocoa” pentru a ne referi la întreaga platformă.
Mai multe cadre UI specifice
Ambele SDK-uri conțin cadre suplimentare care se bazează pe AppKit și UIKit pentru a oferi acces la elemente UI mai avansate sau specifice.
De exemplu:
- SdK-urile macOS, iOS și watchOS conțin MapKit, care oferă clase pentru a integra Apple Maps în aplicația dumneavoastră, atât pentru a afișa hărți, cât și pentru a lucra cu date geografice. (MapKit colaborează strâns, de asemenea, cu CoreLocation, abordat mai jos.)
- Atât iOS, cât și macOS conțin noul cadru Social, care permite aplicației dvs. să afișeze interfața de utilizare pentru partajarea de conținut pe Twitter, Facebook, Sina Weibo și alte rețele sociale.
- iOS oferă cadrul MessageUI pentru a interacționa cu e-mailul și pentru a permite utilizatorului să trimită e-mailuri direct din aplicația dumneavoastră.
- SpriteKit, nou atât în iOS 7.0, cât și în OS X 10.9 și SceneKit (nou în OS X 10.9 și, de asemenea, în iOS începând cu versiunea 8.0) facilitează crearea unei interfețe excelente pentru jocuri.
Servicii de sistem
Există, de asemenea, o mulțime de cadre care permit aplicației dvs. să interacționeze cu serviciile de sistem, cum ar fi:
- StoreKit pentru a gestiona achizițiile în aplicație pentru aplicațiile iOS și Mac App Store.
- Securitate pentru a accesa lanțul de chei al sistemului, a stoca și a prelua parole și certificate etc.
- CoreLocation pentru a lucra cu GPS (și servicii de localizare bazate pe Wifi).
- CoreAudio și CoreVideo pentru a lucra cu și a reda medii audio și video.
- Addressbook și EventKit pentru a lucra cu contactele și calendarele utilizatorilor (alături de EventKitUI pe iOS).
- GameKit pentru a vă integra jocurile cu Game Center.
(toate partajate între toate platformele) și multe altele.
Cadre de nivel inferior
Dacă doriți să treceți dincolo de AppKit/UIKit pentru dezvoltarea interfeței cu utilizatorul, ambele SDK-uri oferă, de asemenea, cadre care vă permit să vă murdăriți mai mult mâinile și să lucrați cu interfața cu utilizatorul la niveluri inferioare.
- CoreGraphics este fundamentul tuturor randărilor grafice din cadrele de bază ale interfețelor de bază și puteți și veți lucra cu acesta atunci când vă creați propriile controale personalizate.
- QuartzCore conține ”CoreAnimation”, biblioteca care oferă acces sofisticat, dar ușor, la adăugarea de animații în aplicațiile dumneavoastră – o necesitate pentru orice aplicație modernă pentru iOS și Mac.
- GLKit vă permite să adăugați elemente bazate pe OpenGL în aplicațiile dvs. UIKit/AppKit, în timp ce cadrele OpenGL (macOS) și OpenGLES (iOS și tvOS) de nivel inferior vă oferă acces complet la API-urile OpenGL brute.
rtl.fx, libToffee.fx, libSwift.fx
În plus față de cadrele SDK de bază, Elements furnizează trei fișiere .fx
suplimentare care sunt esențiale pentru funcționarea sa.
-
rtl.fx
este chiar mai fundamental decât cadrul Foundation și conține toate API-urile de nivel scăzut în stil C care alcătuiesc sistemul UNIX de bază al macOS, iOS, watchOS și tvOS; conține, de asemenea, biblioteci precum Grand Central Dispatch și CommonCrypto. În esență, rtl.fx reprezintă cea mai mare parte a antetelor din/usr/include
. -
libToffee.fx
conține tipuri de ajutor care sunt esențiale pentru compilatorul Elements în sine. De exemplu, conține suport intern pentru Future Types, tipuri genericeNSArray<T>
șiNSDictionary<T>
, suport LINQ și multe altele. -
libSwift.fx
oferă tipuri și funcții suplimentare specifice limbajului Swift.
Orice aplicație Cocoa va face automat referire la rtl.fx
, indiferent dacă este sau nu listată în mod explicit în References. Referințele la libToffee.fx
și libSwift.fx
sunt opționale; compilatorul va emite un avertisment/eroare dacă sunt utilizate funcții care necesită o referință la libToffee.fx
sau libSwift.fx
și acestea nu sunt menționate.
.