Platforma Cocoa je nyní zastoupena čtyřmi samostatnými variantami nebo dílčími platformami: macOS, iOS/iPadOS, watchOS a tvOS SDK. Každé SDK se skládá z jednotlivých knihoven, které se obvykle označují jako „frameworky“.
Na straně Objective-C je každý framework balíčkem s příponou .framework
, který obsahuje jak binární (.dylib
, což je srovnatelné s .dll
v systému Windows), tak hlavičkové soubory Objective-C.
Na straně Objective-C je každý framework balíčkem s příponou .framework
. V případě sady Elements je každý framework v SDK reprezentován souborem .fx, který sdružuje všechna metadata ze záhlaví, aby je překladač Elements mohl snáze a rychleji použít.
Elements se dodává s předem vytvořenými soubory .fx
pro všechny frameworky ve standardních sadách Apple SDK, které se dodávají s nejnovějšími verzemi čtyř SDK (a také pro vybrané starší verze).
Úplný seznam všech frameworků najdete v níže uvedených seznamech. Uvidíte, že mnohé z rámců jsou sdílené některými nebo dokonce všemi sadami SDK a poskytují rozsáhlou knihovnu tříd, která umožňuje psát kód, který lze zkompilovat a sdílet pro všechny dílčí platformy, zatímco každá sada SDK poskytuje také značný počet rámců, které jsou specifické pro danou platformu.
- Všechny frameworky macOS SDK
- Všechny frameworky iOS SDK
- Všechny frameworky tvOS SDK
- Všechny frameworky watchOS SDK
- Všechny frameworky Mac Catalyst
Podívejme se na některé z těchto frameworků podrobněji.
Foundation
Pravděpodobně nejkritičtějším frameworkem pro každou aplikaci Cocoa je framework Foundation, protože – jak název napovídá – poskytuje velkou část základních tříd, ze kterých se skládá aplikace v běhovém prostředí jazyka Objective-C. Patří sem většina standardních tříd s předponami NS*
(kromě tříd pro grafické uživatelské rozhraní, o tom více níže), od jednoduchých a základních typů, jako jsou NSString
, NSArray
a podobně, až po třídy, které zajišťují přístup k základním službám operačního systému, například NSFileManager
pro přístup k disku, NSNotificationCenter
pro práci s oznámeními, NSURL*
třídy pro práci se síťovými požadavky a mnoho a mnoho dalších.
Přečtěte si více na stránce o Foundation.fx
. Je k dispozici na všech dílčích platformách Cocoa.
Uživatelská rozhraní:
Podobnosti mezi SDK pro iOS, watchOS, tvOS a macOS se rozplynou, jakmile vstoupíme do oblasti vývoje uživatelského rozhraní – a to z dobrého důvodu, protože uživatelské rozhraní aplikací na těchto platformách se značně liší. Z tohoto důvodu poskytují SDK tři velmi odlišné rámce:
AppKit
je obsažen pouze v macOS SDK a poskytuje všechny třídy a ovládací prvky potřebné pro vytváření aplikací pro Mac. Většina těchto tříd sdílí z důvodů dědictví společný jmenný prefix s Foundation a začíná na NS*
, přičemž mezi třídy, se kterými budete pracovat, patří NSWindow
, NSButton
, NSTableView
a podobně.
UIKit
je rámec, který používají systémy iOS i tvOS pro poskytování svých uživatelských rozhraní, a jeho třídy začínají na prefix UI*
. Mnoho konceptů je společných pro AppKit a UIKit, ale třídy se liší &mdash některé více než jiné. Oba frameworky mají například třídu pro reprezentaci barev (NSColor
, respektive UIColor
), které fungují velmi podobně, zatímco jiné koncepty jsou pro UIKit poměrně unikátní, například používání předdefinovaných řadičů jako UINavigationController
a UITabBarController
. UIKit má také rozdíly (některé drobné, některé velmi podstatné) mezi systémy iOS a tvOS.
WatchKit
konečně používá watchOS k vytváření uživatelského rozhraní pro Apple Watch, pokud jde o aplikace, pohledy a oznámení. (Existuje také ClockKit
pro vytváření komplikací na ciferníku hodinek.) WatchKit používá jiný a jednodušší přístup k návrhu uživatelského rozhraní než UIKit.
Různé frameworky nutí vývojáře přehodnotit a od základu navrhnout uživatelské rozhraní své aplikace, ale to je dobře, protože paradigmata uživatelského rozhraní na jednotlivých platformách se zásadně liší, přičemž UIKit je z velké části řízen dotykem (jak přímým, tak prostřednictvím Siri Remote v Apple TV) a AppKit se používá pro tradičnější interakci ve stylu myš+klávesnice.
Mnoho konceptů stojících za těmito frameworky je však podobných a zjistíte, že naučit se vytvářet aplikace na jednom z nich se v mnoha případech snadno přenese i na druhý. Všechny tři frameworky například zahrnují paradigma Model-View-Controller pro oddělení skutečného uživatelského rozhraní od třídy „controller“, která jej řídí. To se projeví v okamžiku, kdy začnete vytvářet své první uživatelské rozhraní, protože místo toho, abyste v kódu implementovali vlastní třídu Window nebo View (vzhledem k jednookenní povaze systému iOS aplikace UIKit uvažují převážně v termínech pohledů, nikoli oken), jako je tomu v .NET nebo Delphi, implementujete okno (nebo pohled) “Controller“.
Další témata na této stránce dokumentace, například článek Práce se soubory XIB, pojednávají o těchto koncepcích podrobněji.
Přečtěte si více o AppKit.fx
, UIKit.fx
a WatchKit.fx
.
Poznámka: V macOS SDK existuje Cocoa.framework
(a odpovídající Cocoa.fx
). Tento rámec je pouze svazek Foundation a AppKit. Nesmí se zaměňovat s naším obecným používáním termínu „Cocoa“ pro označení celé platformy.
Další specifické rámce uživatelského rozhraní
Obě sady SDK obsahují další rámce, které navazují na AppKit a UIKit a poskytují přístup k pokročilejším nebo specifickým prvkům uživatelského rozhraní.
Například:
- Sady SDK pro macOS, iOS a watchOS obsahují MapKit, který poskytuje třídy pro integraci Apple Maps do aplikace, a to jak pro zobrazování map, tak pro práci s geografickými daty. (MapKit také úzce spolupracuje s CoreLocation, o kterém píšeme níže.)
- Systémy iOS i macOS obsahují nový framework Social, který umožňuje aplikaci zobrazovat uživatelské rozhraní pro sdílení obsahu na Twitteru, Facebooku, Sina Weibo a dalších sociálních sítích.
- iOS poskytuje framework MessageUI pro interakci s elektronickou poštou a umožňuje uživateli odesílat e-maily přímo z vaší aplikace.
- SpriteKit, nový v iOS 7.0 i OS X 10.9, a SceneKit (nový v OS X 10.9 a od verze 8.0 také v iOS) usnadňují vytváření skvělého uživatelského rozhraní her.
Systémové služby
K dispozici je také řada frameworků, které umožňují vaší aplikaci komunikovat se systémovými službami, například:
- StoreKit pro obsluhu nákupů v aplikacích pro iOS a Mac App Store.
- Security pro přístup k řetězci systémových klíčů, ukládání a načítání hesel a certifikátů atd.
- CoreLocation pro práci s GPS (a lokalizačními službami založenými na Wifi).
- CoreAudio a CoreVideo pro práci se zvukovými a video médii a jejich přehrávání.
- Addressbook a EventKit pro práci s kontakty a kalendáři uživatelů (spolu s EventKitUI v iOS).
- GameKit pro integraci vašich her s Game Center.
(vše sdíleno mezi všemi platformami) a další.
Frameworky nižších úrovní
Pokud chcete při vývoji uživatelského rozhraní jít dál než jen k AppKitu/UIKitu, obě sady SDK poskytují také frameworky, které vám umožní ušpinit si ruce a pracovat s uživatelským rozhraním na nižších úrovních.
- CoreGraphics je základem veškerého vykreslování grafiky v základních frameworcích uživatelského rozhraní a můžete a budete s ním pracovat při vytváření vlastních ovládacích prvků.
- QuartzCore obsahuje “CoreAnimation“, knihovnu, která poskytuje sofistikovaný a zároveň snadný přístup k přidávání animací do vašich aplikací – to je nutnost pro každou moderní aplikaci pro iOS a Mac.
- GLKit umožňuje přidávat do aplikací UIKit/AppKit prvky založené na OpenGL, zatímco rámce nižší úrovně OpenGL (macOS) a OpenGLES (iOS a tvOS) poskytují plný přístup k surovým rozhraním OpenGL API.
rtl.fx, libToffee.fx, libSwift.fx
Kromě základních rámců SDK poskytuje Elements tři další .fx
soubory, které jsou pro jeho fungování klíčové.
-
rtl.fx
je ještě zásadnější než rámec Foundation a obsahuje všechna nízkoúrovňová rozhraní API ve stylu C, která tvoří jádro unixového systému macOS, iOS, watchOS a tvOS; obsahuje také knihovny jako Grand Central Dispatch a CommonCrypto. V podstatě rtl.fx představuje většinu hlaviček v/usr/include
. -
libToffee.fx
obsahuje pomocné typy, které jsou klíčové pro samotný překladač Elements. Obsahuje například interní podporu pro Future Types, obecné typyNSArray<T>
aNSDictionary<T>
, podporu LINQ a další. -
libSwift.fx
Poskytuje další typy a funkce specifické pro jazyk Swift.
Každá aplikace Cocoa bude automaticky odkazovat na rtl.fx
, ať už je v Referencích explicitně uveden, nebo ne. Odkazy na libToffee.fx
a libSwift.fx
jsou nepovinné; překladač upozorní/vyvolá chybu, pokud jsou použity funkce, které vyžadují odkaz na libToffee.fx
nebo libSwift.fx
, a ty nejsou odkazovány.