A Cocoa platformot ma már négy különálló íz, vagy alplatform képviseli a macOS, iOS/iPadOS, watchOS és tvOS SDK-kkal. Mindegyik SDK különálló könyvtárakból áll, amelyeket általában “keretrendszereknek” neveznek.
Az Objective-C oldalon minden keretrendszer egy .framework
kiterjesztésű csomag, amely bináris (.dylib
, ami Windowson a .dll
-hoz hasonló) és Objective-C fejlécfájlokat is tartalmaz. Az Elements esetében az SDK minden egyes keretrendszerét egy .fx fájl képviseli, amely összesíti a fejlécek összes metaadatát, hogy az Elements fordítója könnyebben és gyorsabban tudja azokat felhasználni.
Az Elements előre elkészített .fx
fájlokat tartalmaz a szabványos Apple SDK-k összes keretrendszeréhez, amelyeket a négy SDK legújabb verziójával szállítanak (valamint bizonyos régebbi verziókhoz).
A keretrendszerek teljes listáját az alábbi listákban találja. Látni fogja, hogy a keretrendszerek közül sok közös néhány vagy akár az összes SDK számára, és olyan hatalmas osztálykönyvtárat biztosít, amely lehetővé teszi, hogy olyan kódot írjon, amely minden alplatformra lefordítható és megosztható, míg minden SDK jelentős számú olyan keretrendszert is biztosít, amelyek platformspecifikusak.
- All macOS SDK Frameworks
- All iOS SDK Frameworks
- All tvOS SDK Frameworks
- All watchOS SDK Frameworks
- All Mac Catalyst Frameworks
Nézzünk meg néhány ilyen keretrendszert részletesebben.
Foundation
Vélhetően a legkritikusabb keretrendszer minden Cocoa alkalmazás számára a Foundation keretrendszer, mivel – ahogy a neve is mutatja – ez biztosítja az Objective-C futási időn egy alkalmazást alkotó alaposztályok nagy részét. Ide tartozik a legtöbb NS*
előtaggal ellátott szabványos osztály (eltekintve a GUI osztályoktól, erről bővebben alább), az egyszerű és alapvető típusoktól, mint a NSString
, NSArray
és hasonlók, az alapvető operációs rendszer szolgáltatásokhoz való hozzáférést biztosító osztályokig, mint a NSFileManager
a lemezeléréshez, a NSNotificationCenter
az értesítésekkel való munkához, a NSURL*
osztályok a hálózati kérésekkel való munkához, és még sok-sok más.
Bővebben a körülbelül Foundation.fx
oldalon. Minden Cocoa alplatformon elérhető.
Felhasználói interfészek: AppKit vs. UIKit vs. WatchKit.
Az iOS, watchOS, tvOS és macOS SDK-k közötti hasonlóságok szertefoszlanak, amint belépünk a felhasználói felület fejlesztésének területére – és jó okkal, mivel az alkalmazások felhasználói felülete ezeken a platformokon jelentősen különbözik. Emiatt az SDK-k három nagyon különböző keretrendszert biztosítanak:
AppKit
csak a macOS SDK tartalmazza, és minden olyan osztályt és vezérlőt biztosít, amelyre a Mac alkalmazások készítéséhez szükség van. Örökségi okokból a legtöbb ilyen osztály közös elnevezési előtaggal rendelkezik a Foundationnel, és NS*
-mal kezdődik, és az osztályok, amelyekkel dolgozni fogsz, a NSWindow
, NSButton
, NSTableView
és hasonlók.
UIKit
az a keretrendszer, amelyet az iOS és a tvOS is használ a felhasználói felület biztosításához, és az osztályai UI*
előtaggal kezdődnek. Sok fogalom közös az AppKit és az UIKit között, de az osztályok különböznek &mdash egyesek jobban, mint mások. Például mindkét keretrendszer rendelkezik egy-egy osztállyal a színek ábrázolására (NSColor
, illetve UIColor
), amelyek nagyon hasonlóan működnek, míg más fogalmak meglehetősen egyediek az UIKit számára, például az olyan előre definiált vezérlők használata, mint a UINavigationController
és UITabBarController
. Az UIKitnek az iOS és a tvOS között is vannak eltérései (néhány kisebb, néhány nagyon jelentős).
WatchKit
végül a watchOS használja az Apple Watch felhasználói felületének kialakítására az Alkalmazások, a Glances és az Értesítések tekintetében. (Van még ClockKit
az óralap komplikációk építésére.) A WatchKit más és egyszerűbb megközelítést használ a felhasználói felület tervezéséhez, mint az UIKit.
A különböző keretrendszerek arra kényszerítik a fejlesztőt, hogy az alapoktól kezdve újragondolja és megtervezze az alkalmazás felhasználói felületét, de ez jó dolog, mert az egyes platformok felhasználói felület paradigmái alapvetően különböznek, mivel az UIKit nagyrészt az érintésre épül (közvetlenül és az Apple TV-n a Siri Remote-on keresztül), az AppKit pedig a hagyományosabb egér+billentyűzet stílusú interakcióra.
A keretrendszerek mögött álló koncepciók nagy része azonban hasonló, és úgy fogja találni, hogy ha megtanul alkalmazásokat készíteni az egyiken, az sok esetben könnyen átültethető lesz a másikra is. Például mindhárom keretrendszer a Model-View-Controller paradigmát alkalmazza a tényleges felhasználói felület és az azt vezérlő “vezérlő” osztály szétválasztására. Ez abban a pillanatban nyilvánvalóvá válik, amikor elkezdi létrehozni az első felhasználói felületét, mivel ahelyett, hogy saját Window vagy View osztályát implementálná a kódban (az iOS egyablakos jellege miatt az UIKit alkalmazások többnyire nézetekben, nem ablakokban gondolkodnak), mint a .NET vagy Delphi, hanem egy Window (vagy View) ”Controller”-t valósít meg.
A docs oldal más témái, például a Working with XIB Files cikk részletesebben tárgyalja ezeket a fogalmakat.
Az AppKit.fx
, UIKit.fx
és WatchKit.fx
témakörökben olvashat többet.
Megjegyzés: A macOS SDK-ban létezik egy Cocoa.framework
(és a hozzá tartozó Cocoa.fx
). Ez a keretrendszer csupán a Foundation és az AppKit csomagja. Nem tévesztendő össze a “Cocoa” kifejezés általános használatával, amellyel a teljes platformra utalunk.
Specifikusabb UI-keretek
Mindkét SDK tartalmaz további keretrendszereket, amelyek az AppKit és az UIKit tetejére épülnek, hogy hozzáférést biztosítsanak fejlettebb vagy specifikusabb UI-elemekhez.
Például:
- A macOS, iOS és watchOS SDK-k tartalmazzák a MapKit-et, amely osztályokat biztosít az Apple Maps integrálásához az alkalmazásba, mind a térképek megjelenítéséhez, mind a földrajzi adatokkal való munkához. (A MapKit szorosan együttműködik az alább tárgyalt CoreLocation programmal is.)
- Az iOS és a macOS egyaránt tartalmazza az új Social keretrendszert, amely lehetővé teszi, hogy az alkalmazás felhasználói felületet jelenítsen meg a Twitteren, a Facebookon, a Sina Weibón és más közösségi hálózatokon történő tartalommegosztáshoz.
- Az iOS biztosítja a MessageUI keretrendszert az e-mailekkel való interakcióhoz és ahhoz, hogy a felhasználó közvetlenül az alkalmazásodból e-maileket küldhessen.
- Az iOS 7.0-ban és az OS X 10.9-ben is új SpriteKit és a SceneKit (új az OS X 10.9-ben és az iOS-ben is a 8.0-s verzió óta) megkönnyíti a nagyszerű játék UI létrehozását.
System Services
Ezeken kívül van egy csomó keretrendszer, amelyek lehetővé teszik, hogy az alkalmazásod kölcsönhatásba lépjen a rendszer szolgáltatásaival, például:
- StoreKit az iOS és Mac App Store alkalmazások alkalmazáson belüli vásárlásainak kezelésére.
- Security a rendszer kulcsláncának eléréséhez, jelszavak és tanúsítványok tárolásához és lekéréséhez stb.
- CoreLocation a GPS-szel (és Wifi alapú helymeghatározó szolgáltatásokkal) való együttműködéshez.
- CoreAudio és CoreVideo az audio- és videomédiával való együttműködéshez és lejátszáshoz.
- Addressbook és EventKit a felhasználók névjegyzékével és naptárával való együttműködéshez (az EventKitUI mellett iOS-en).
- GameKit a játékok Game Centerrel való integrálásához.
(minden platformon közös) stb.
Kisebb szintű keretrendszerek
Ha a felhasználói felület fejlesztéséhez túl akarsz lépni az AppKit/UIKit-en, mindkét SDK olyan keretrendszereket is biztosít, amelyekkel piszkosabbá teheted a kezed, és alacsonyabb szinteken dolgozhatsz a felhasználói felülettel.
- A CoreGraphics az alapját képezi az összes grafikai renderelésnek az alapvető felhasználói felület keretrendszerekben, és ezzel dolgozhatsz és fogsz is dolgozni, amikor saját egyéni vezérlőelemeket készítesz.
- A QuartzCore tartalmazza a ”CoreAnimation” könyvtárat, amely kifinomult, mégis egyszerű hozzáférést biztosít az animáció hozzáadásához az alkalmazásokhoz – ez elengedhetetlen minden modern iOS és Mac alkalmazáshoz.
- A GLKit lehetővé teszi, hogy OpenGL alapú elemeket adjon hozzá UIKit/AppKit alkalmazásaihoz, míg az alacsonyabb szintű OpenGL (macOS) és OpenGLES (iOS és tvOS) keretrendszerek teljes hozzáférést biztosítanak a nyers OpenGL API-khoz.
rtl.fx, libToffee.fx, libSwift.fx
Az alapvető SDK keretrendszereken kívül az Elements három további .fx
fájlt biztosít, amelyek elengedhetetlenek a működéséhez.
-
rtl.fx
még alapvetőbb, mint a Foundation keretrendszer, és tartalmazza az összes olyan alacsony szintű C-stílusú API-t, amelyek a macOS, iOS, watchOS és tvOS alapvető UNIX rendszerét alkotják; emellett olyan könyvtárakat is tartalmaz, mint a Grand Central Dispatch és a CommonCrypto. Lényegében az rtl.fx képviseli a legtöbb fejlécet a/usr/include
-ban. -
libToffee.fx
olyan segédtípusokat tartalmaz, amelyek kulcsfontosságúak magához az Elements fordítóprogramhoz. Például tartalmazza a Future Types belső támogatását, az általánosNSArray<T>
ésNSDictionary<T>
típusokat, a LINQ támogatást és még sok mást. -
libSwift.fx
további, a Swift nyelvre jellemző típusokat és függvényeket biztosít.
Minden Cocoa alkalmazás automatikusan hivatkozni fog a rtl.fx
-re, függetlenül attól, hogy az explicit módon szerepel-e a hivatkozások között vagy sem. A libToffee.fx
és libSwift.fx
hivatkozások opcionálisak; a fordító figyelmeztetni/hibázni fog, ha olyan funkciókat használ, amelyek a libToffee.fx
vagy libSwift.fx
hivatkozását igénylik, és ezek nincsenek hivatkozva.