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é typy NSArray<T> a NSDictionary<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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.