Kakao (API) - Cocoa (API)

Kakao
Vývojáři Apple Inc.
Napsáno C , C ++ , Objective-C , Swift
Operační systém Operační Systém Mac
Typ Softwarový rámec
Licence Proprietární
s některými komponentami open source
webová stránka Apple Developer

Cocoa je nativní objektově orientované aplikační programovací rozhraní (API) společnosti Apple pro svůj desktopový operační systém macOS .

Cocoa se skládá z rámců Foundation Kit , Application Kit a Core Data , jak jsou zahrnuty v Cocoa.hhlavičkovém souboru, a knihoven a rámců zahrnutých těmito, jako je standardní knihovna C a běhový modul Objective-C.

Kakaové aplikace jsou obvykle vyvíjeny pomocí vývojových nástrojů poskytovaných společností Apple, konkrétně Xcode (dříve Project Builder ) a Interface Builder (nyní součást Xcode), pomocí programovacích jazyků Objective-C nebo Swift . K programovacímu prostředí Cocoa je však možné přistupovat pomocí dalších nástrojů, jako jsou Clozure CL , LispWorks , Object Pascal , Python , Perl , Ruby a AppleScript, pomocí mostových mechanismů, jako jsou PasCocoa , PyObjC , CamelBones , RubyCocoa a D /Most Objective-C. Implementace jazyka Ruby s názvem MacRuby , která odstraňuje potřebu mostového mechanismu, byla dříve vyvinuta společností Apple, zatímco Nu je jazyk podobný Lispu, který lze použít s kakaem bez mostu. Je také možné psát programy Objective-C Cocoa v jednoduchém textovém editoru a vytvářet je ručně pomocí GNU Compiler Collection (GCC) nebo Clang z příkazového řádku nebo z makefile .

Pro koncové uživatele jsou kakaové aplikace napsané pomocí programovacího prostředí Cocoa. Takové aplikace mají obvykle známý vzhled a dojem, protože programovací prostředí Cocoa poskytuje mnoho běžných prvků uživatelského rozhraní (jako jsou tlačítka, posuvníky atd.) A automatizuje mnoho aspektů aplikace tak, aby vyhovovala zásadám lidského rozhraní společnosti Apple .

Pro iOS , iPadOS , tvOS a watchOS existuje podobné API s názvem Cocoa Touch , které zahrnuje rozpoznávání gest , animaci a jinou sadu grafických ovládacích prvků . Používá se v aplikacích pro zařízení Apple, jako jsou iPhone , iPod Touch , iPad , Apple TV a Apple Watch .

Dějiny

Cocoa pokračuje v řadě několika softwarových rámců (hlavně App Kit a Foundation Kit ) z programovacích prostředí NeXTSTEP a OpenStep vyvinutých společností NeXT v 80. a 90. letech minulého století. Apple získal NeXT v prosinci 1996 a následně začal pracovat na operačním systému Rhapsody, který měl být přímým nástupcem OpenStepu. Mělo to mít emulační základnu pro klasické aplikace Mac OS , pojmenovanou Blue Box . Základ knihoven a binární podpory OpenStep byl označen jako Yellow Box . Rhapsody se vyvinulo v Mac OS X a ze Yellow Box se stalo Cocoa. Třídy kakaa tedy začínají písmeny NS , například NSString nebo NSArray. Jedná se o původní proprietární termín pro rámec OpenStep, NeXTSTEP.

Velká část práce, která byla věnována vývoji OpenStep, byla věnována vývoji Mac OS X, přičemž kakao je nejviditelnější částí. Rozdíly však existují. Například NeXTSTEP a OpenStep používaly Display PostScript pro zobrazení textu a grafiky na obrazovce, zatímco Cocoa závisí na Apple Quartz (který používá zobrazovací model Portable Document Format (PDF), ale ne jeho základní technologii). Cocoa má také úroveň internetové podpory, včetně tříd NSURL a WebKit HTML a dalších, zatímco OpenStep měl pouze základní podporu pro spravovaná síťová připojení prostřednictvím tříd NSFileHandle a soketů Berkeley .

Výsledný softwarový rámec obdržel kvůli účelnosti název Cocoa , protože název již byl ochrannou známkou společnosti Apple. Mnoho let před tímto současným používáním názvu vznikla ochranná známka společnosti Apple Cocoa jako název aplikace pro návrh multimediálních projektů pro děti. Aplikace byla původně vyvinuta ve společnosti Apple Advanced Technology Group pod názvem KidSim a poté byla přejmenována a chráněna ochrannou známkou jako „Cocoa“. Název vytvořený Peterem Jensenem, který byl najat pro vývoj kakaa pro Apple, měl evokovat „Javu pro děti“, protože běžel vložený na webových stránkách. Ochranná známka, a tedy název „Cocoa“, byla znovu použita, aby se předešlo zpoždění, ke kterému by mohlo dojít při registraci nové ochranné známky pro tento softwarový rámec. Původní program „Cocoa“ byl v Apple ukončen v jedné z racionalizací, které následovaly po návratu Steva Jobse do Applu. Poté byla licencována třetí straně a prodávána jako Stagecast Creator do roku 2014.

Správa paměti

Jednou z funkcí prostředí Cocoa je jeho zařízení pro správu dynamicky přidělené paměti. Třída NSObject Foundation Kit , ze které je odvozena většina tříd, jak prodejců, tak uživatelů, implementuje schéma počítání referencí pro správu paměti. Objekty, které jsou odvozeny od NSObject kořenové třídy reagovat na retaina releasezprávy, a udržet udržet počítat. Metoda s názvem retainCountexistuje, ale na rozdíl od jejího názvu obvykle nevrátí přesný počet uchování objektu. Používá se hlavně pro účely systémové úrovně. Ruční vyvolání nedoporučuje společnost Apple.

Nově přidělený objekt vytvořený s allocnebo copymá počet uchování jednoho. Odesláním tohoto objektu retainzpráva zvýší počet uchování, zatímco odesláním releasezprávy se počet uchování sníží. Když počet uchování objektu dosáhne nuly, je uvolněn postupem podobným destruktoru C ++ . deallocnení zaručeno, že bude vyvolán.

Počínaje Objective-C 2.0, runtime Objective-C implementovalo volitelný sběrač odpadků , který je nyní zastaralý a zastaralý ve prospěch automatického počítání referencí (ARC). V tomto modelu runtime změnilo operace počítání referencí kakaa, jako například "zachovat" a "uvolnit", na ne- operace . U implementace Objective-C 2.0 pro iOS neexistuje garbage collector . Sběr odpadků v Objective-C běžel na vlákně na pozadí s nízkou prioritou a může se zastavit na uživatelských událostech Cocoa se záměrem udržet uživatelský komfort citlivý. Starší garbage collector je stále k dispozici v systému Mac OS X verze 10.13, ale nepoužívají ho žádné aplikace poskytované společností Apple.

V roce 2011 kompilátor LLVM představil automatické počítání odkazů (ARC), které nahrazuje konvenční sběrač odpadků provedením statické analýzy zdrojového kódu Objective-C a vložením zpráv o uchování a uvolnění podle potřeby.

Hlavní rámce

Kakao se skládá ze tří objektových knihoven Objective-C, které se nazývají rámce . Rámce jsou funkčně podobné sdíleným knihovnám , kompilovanému objektu, který lze za běhu dynamicky načítat do adresního prostoru programu, ale rámce přidávají přidružené prostředky, hlavičkové soubory a dokumentaci. Rámce Cocoa jsou implementovány jako typ balíčku , který obsahuje výše uvedené položky ve standardních umístěních.

  • Foundation Kit ( Foundation ), se poprvé objevil v Enterprise Objects Framework na NeXTSTEP 3. Byl vyvinut jako součást práce OpenStep a následně se stal základem pro OpenStep AppKit, když byl tento systém vydán v roce 1994. Na macOS je Foundation založen na Core Nadace . Foundation je obecná objektově orientovaná knihovna poskytujícímanipulacis řetězci a hodnotami, kontejnery a iteraci , distribuované výpočty , smyčky událostí (spouštěcí smyčky) a další funkce, které nejsou přímo svázány s grafickým uživatelským rozhraním. Předpona „NS“, použitá pro všechny třídy a konstanty v rámci, pochází z dědictví OPENSTEP společnosti Cocoa, které společně vyvinuly společnosti NeXT a Sun Microsystems .
  • Application Kit ( AppKit ) pochází přímo z původní NeXTSTEP Application Kit. Obsahuje kódové programy, které lze použít k vytváření a interakci s grafickými uživatelskými rozhraními . AppKit je postaven na nadaci Foundation a používá stejnoupředponu NS .
  • Core Data je framework pro trvalost objektů, který je součástí Foundation a Cocoa a nachází se v Cocoa.h.

Klíčovou součástí architektury kakaa je jeho komplexní model zobrazení. Toto je organizováno podle konvenčních linií pro aplikační rámec, ale je založeno na modelu kresby Portable Document Format (PDF), který poskytuje Quartz . To umožňuje vytváření vlastního obsahu kresby pomocí kreslících příkazů podobných PostScriptu , což také umožňuje automatickou podporu tiskárny atd. Protože rámec Cocoa spravuje všechny ořezové, rolovací, škálovací a další práce s kreslící grafikou, je programátor osvobozen od implementace základní infrastruktury a může se soustředit na jedinečné aspekty obsahu aplikace.

Model – pohled – ovladač

K Smalltalk týmy v Xerox PARC nakonec se usadil na filozofie designu, která vedla k snadný vývoj a vysokou opětovné použití kódu. Pojmenovaný model -view -controller (MVC), koncept rozděluje aplikaci do tří sad interagujících tříd objektů:

  • Modelové třídy představují data a operace problémových domén (například seznamy osob/oddělení/rozpočty; dokumenty obsahující oddíly/odstavce/poznámky pod čarou stylizovaného textu).
  • Třídy zobrazení implementují vizuální reprezentace a prostředky pro interakci člověk-počítač (například rolovací mřížky ikon s titulky a vyskakovací nabídky možných operací).
  • Třídy řadičů obsahují logiku, která zobrazuje modelová data jako reprezentace zobrazení, mapuje akce uživatelů iniciované na modelové operace a udržuje stav, aby byly obě synchronizovány.

Cocoa design je docela, ale ne absolutně přísná aplikace zásad MVC. V rámci OpenStep byla většina poskytovaných tříd buď třídami zobrazení na vysoké úrovni (v AppKit), nebo jednou z řady relativně nízkých úrovní modelových tříd, jako je NSString. Ve srovnání s podobnými systémy MVC postrádal OpenStep silnou vrstvu modelu. Žádná akciová třída například nepředstavovala „dokument“. Během přechodu na kakao se modelová vrstva výrazně rozšířila a zavedla řadu předem vytvořených tříd, které poskytují funkce běžné pro desktopové aplikace.

V systému Mac OS X 10.3 Apple představil rodinu tříd NSController, které poskytují předdefinované chování pro vrstvu řadiče. Tyto třídy jsou považovány za součást systému Cocoa Bindings , který také široce využívá protokoly, jako je Key-Value Observing a Key-Value Binding . Termín „vazba“ označuje vztah mezi dvěma objekty, často mezi pohledem a ovladačem. Vazby umožňují vývojáři soustředit se více na deklarativní vztahy než na orchestraci jemnozrnného chování.

S příchodem systému Mac OS X 10.4 společnost Apple tento základ dále rozšířila zavedením rámce Core Data , který standardizuje sledování změn a trvalost ve vrstvě modelu. Rámec ve skutečnosti velmi zjednodušuje proces provádění změn v aplikačních datech, v případě potřeby jejich zrušení, ukládání dat na disk a jejich zpětné načítání.

Při poskytování rámcové podpory pro všechny tři domény MVC je cílem společnosti Apple snížit množství standardního nebo „lepicího“ kódu, který musí vývojáři psát, a uvolnit tak zdroje, které stráví čas funkcemi specifickými pro aplikaci.

Pozdní vazba

Ve většině objektově orientovaných jazyků jsou volání metod fyzicky reprezentována ukazatelem na kód v paměti. To omezuje návrh aplikace, protože jsou zapotřebí konkrétní třídy zpracování příkazů , obvykle organizované podle vzoru řetězce odpovědnosti . Zatímco Cocoa si tento přístup z větší části zachovává, pozdní vazba Objective-C otevírá větší flexibilitu.

V části Objective-C jsou metody reprezentovány selektorem , řetězcem popisujícím metodu, kterou je třeba volat. Při odeslání zprávy je selektor odeslán do modulu runtime Objective-C, porovnán se seznamem dostupných metod a je volána implementace metody . Protože selektor jsou textová data, umožňuje je uložit do souboru, přenášet po síti nebo mezi procesy nebo s nimi manipulovat jiným způsobem. Implementace metody se vyhledává za běhu, nikoli při kompilaci. Za to je malý výkonnostní trest, ale pozdní vazba umožňuje stejnému voliči odkazovat na různé implementace.

Podobným tokenem poskytuje Cocoa všudypřítomnou metodu manipulace s daty nazývanou kódování klíč-hodnota (KVC). To umožňuje vyhledat nebo změnit za běhu data nebo vlastnosti objektu podle názvu. Název vlastnosti funguje jako klíč k hodnotě. V tradičních jazycích je tato pozdní vazba nemožná. KVC vede k velké flexibilitě designu. Typ objektu nemusí být znám, přesto lze pomocí KVC zjistit jakoukoli vlastnost tohoto objektu. Také rozšířením tohoto systému o něco, co kakao označuje jako sledování klíč-hodnota (KVO), je poskytována automatická podpora pro zpětné opakování .

Pozdní statická vazba je variantou vazby někde mezi statickou a dynamickou vazbou. Vazba jmen před spuštěním programu se nazývá static ( early ); vazby prováděné během běhu programu jsou dynamické ( pozdní nebo virtuální ).

Bohaté předměty

Jednou z nejužitečnějších funkcí Cocoa jsou výkonné základní objekty, které systém dodává. Jako příklad zvažte třídy Foundation NSStringa NSAttributedString, které poskytují řetězce Unicode , a systém v AppKit, který umožňuje programátorovi umístit do GUI řetězcové objekty. NSText

NSTexta související třídy se používají k zobrazení a úpravě řetězců. Kolekce zahrnutých objektů umožňuje aplikaci implementovat cokoli od jednoduchého jednořádkového pole pro zadávání textu až po kompletní vícestránkové, vícesloupcové schéma rozvržení textu s plnými funkcemi profesionální typografie, jako je vyrovnání párů , ligatury , běh textu kolem libovolných tvarů , rotace , plná podpora Unicode a vykreslování glyfů bez vyhlazení . Rozložení odstavců lze ovládat automaticky nebo uživatelem pomocí vestavěného objektu „ pravítko “, který lze připojit k jakémukoli zobrazení textu. Kontrola pravopisu je automatická a využívá systémovou sadu jazykových slovníků. Je integrována neomezená podpora zpět/zpět. Pomocí pouze vestavěných funkcí lze napsat textový editor v pouhých 10 řádcích kódu. U nových objektů ovladače to může klesnout k nule. Když jsou potřeba rozšíření, Cocoa použití Objective-C dělá to přímočarý úkol. Objective-C zahrnuje koncept „ kategorií “, který umožňuje úpravu stávající třídy „na místě“. Funkčnost lze dosáhnout v kategorii bez jakýchkoli změn původních tříd v rámci nebo dokonce přístupu k jejímu zdroji. V jiných běžných jazycích stejný úkol vyžaduje odvození nové podtřídy podporující přidané funkce a následné nahrazení všech instancí původní třídy instancemi nové podtřídy.

Implementace a vazby

Rámce Cocoa jsou napsány v Objective-C , a proto je to preferovaný jazyk pro vývoj aplikací Cocoa. Vázání Java pro rámce Cocoa (nazývané most Java ) byly také k dispozici s cílem nahradit Objective-C populárnějším jazykem, ale tyto vazby nebyly mezi vývojáři Cocoa oblíbené a sémantika předávání zpráv Cocoa se nepřeložila dobře na staticky- psaný jazyk, jako je Java. Potřeba Cocoa za běhové vazby znamená, že mnoho klíčových funkcí Cocoa není v Javě k dispozici. V roce 2005 společnost Apple oznámila, že most Java bude zastaralý, což znamená, že funkce přidané do Cocoa ve verzích macOS novějších než 10.4 nebudou přidány do programovacího rozhraní Cocoa-Java.

Na konferenci Apple Worldwide Developers Conference (WWDC) 2014 představila společnost Apple nový programovací jazyk s názvem Swift , který má nahradit Objective-C.

AppleScriptObjC

Původně bylo možné AppleScript Studio použít k vývoji jednodušších kakaových aplikací. Nicméně, jak Snow Leopard, to bylo zastaralé. Byl nahrazen programem AppleScriptObjC, který umožňuje programování v jazyce AppleScript při použití rámců Cocoa.

Jiné vazby

Vazby třetích stran dostupné pro jiné jazyky zahrnují Clozure CL , Monobjc a NObjective ( C# ), Cocoa# (CLI), Cocodao a D /Objective-C Bridge, LispWorks , CamelBones ( Perl ), PyObjC ( Python ), FPC PasCocoa ( Lazarus a Free Pascal ), RubyCocoa ( Ruby ). Nu používá objektový model Objective-C přímo, a proto může používat kakaové rámce, aniž by potřeboval vazbu.

Další implementace

Existují také open source implementace hlavních částí rámce Cocoa, jako jsou GNUstep a Cocotron, které umožňují vývoj aplikací Cocoa napříč platformami cílit na jiné operační systémy, jako je Microsoft Windows a Linux .

Viz také

Reference

Bibliografie

externí odkazy

  1. ^ Garfinkel, Simson; Mahoney, Michael K. (2002). Budování kakaových aplikací: Průvodce krok za krokem . O'Reilly.