Cocoa
Cocoa je sada objektově orientovaných frameworků, které zajišťují běhové prostředí pro aplikace určené pro operační systém OS X od firmy Apple. Pro iOS se používá knihovna Cocoa Touch, která navíc obsahuje rozpoznání gest, animace a grafické rozhraní pro iOS. K vývoji Cocoa aplikací se používá vývojové prostředí Xcode a jazyky Objective-C a nově taky Swift. Cocoa frameworky můžeme používat i v jiných jazycích jako je Pascal, Python, Perl, Ruby a to díky takzvaným mostům jako například PasCocoa, PyObjC, RubyCocoa.

Historie 
Prostředí Cocoa je dostupné již od roku 1986. Technologie, které souhrnně označujeme jako Cocoa, se postupně vyvinuly z balíčku NeXTSTEP AppKit, balíčku vývojových nástrojů vyvinutého pro platformu NeXT. Když společnost Apple v roce 1996 společnost NeXT koupila, začala vyvíjet novou verzi systému Mac OS, kterou nyní známe pod názvem Mac OS X a jejíž velkou část založila právě na technologiích získaných od společnosti NeXT. Spolu s dalším vývojem systému Mac OS X se pak dále vyvíjelo i prostředí Cocoa. Společnost Apple do něj přidala technologie pocházející z klasického systému Mac OS, jako je technologie QuickTime, i úplně nové technologie, jako je například technologie Quartz, která umožňuje všechny možné vizuální efekty a animace. Prostředí Cocoa se neustále vyvíjí. Důvod proč se frameworky jmenují Cocoa je jednoduchý. Apple měl na název Cocoa obchodní známku, a tak po koupi společnosti NeXT, použil název Cocoa pro frameworky AppKit a Foundation.

Hlavní frameworky 
Cocoa se skládá z mnoha frameworků. Nejdůležitější jsou ale tyto tří hlavní frameworky.

Foundation 
Framework Foundation je úplným základem Cocoa. Mnoho objektů, které obsahuje, je zde již od dávných dob systému NeXTSTEP. Na objektech z frameworku Foundation je založeno téměř vše ostatní. Framework Foundation prostředí Cocoa a Cocoa Touch sdílí. Základem je třída NSObject, která definuje základní atributy a chovaní objektů. Dál se framework dělí na:
 Value Objects, zde se nachází různé datové typy od integeru přes float až po datum nebo kalendář.
 XML
 Strings, zde se nachází textové řetězce.
 Collections, kolekce jsou objekty, které uchovávají jiné objekty pro další použití. Foudations nabízí tři hlavní kolekce NSArray, NSDictionary a NSSet.
 Predicates
 Operating-System Services, zde se nacházejí třídy, které přistupují k různým částem operačního systému.
 Notifications
 Archiving a serializace
 Objective-C Languege Services

AppKit 
AppKit je framework obsahující všechny objekty, které implementují grafické rozhraní programu jako okno, menu, tlačítko, textové pole atd. AppKit se postará o všechny detaily za vývojáře. AppKit obsahuje víc než 125 tříd a protokolů. Framework se dělí na:
 User Interface, zde se nachází všechny objekty uživatelského rozhraní jako NSAplication, NSWindow, NSView, NSPanel, NSMenu, NSBox, NSScrollView, NSTableView, NSButton.
 Fonty (NSText, NSTextView, NSTextField, NSFont)
 Graphics a Color (NSImage, NSColor)
 Document Support
 Printing (NSPrinter)
 Operating System Services
 International Character Input Support
 Interface Builder Support

Core Data 
Core Data framework je určen pro uchovávání dat a práci s nimi. Byl představen ve OS X 10.4 Tiger. Data můžeme modelovat pomocí entit a vztahů a atributů. Data ukládáme jako XML, binárně a nebo jako SQLite databáze. Technologie Core Data se sama stará o operaci Zpět/Vpřed a je integrována s technologií Cocoa Bindings.

MVC 
Model-View-Controller je softwarová architektura, která odděluje datový model, logiku a uživatelské rozhraní aplikace. Cocoa je od začátku založena na modelu MVC. Pro Model Cocoa využívá framework Core Data, ve kterém vývojář může modelovat data aplikace. Pro View Cocoa má framework AppKit, ten umožňuje pomocí nástroje Interface Builder navrhnout uživatelské rozhraní aplikace. Pro Controller, což je logika aplikace, využívá vlastní zdrojový kód. Nyní však už vývojář nemusí psát kód, aby napsal vlastní program a to díky technologii Cocoa Bindings.

Cocoa Bindings 
Technologie Cocoa Bindings umožňuje vývojáři nakonfigurovat rámec v nástroji Interface Builder takovým způsobem, že aktualizuje svoji hodnotu a vrací provedené změny do objektu modelu více méně automaticky. Stačí, když vývojář prostřednictvím Interface Builderu sdělí, se kterým řídícím objektem má konkrétní prvek uživatelského prostředí spolupracovat a který řetězec má používat jako klíč pro získávání a nastavování hodnoty. Zjednodušeně lze říci, že pro tvorbu uživatelského prostředí nemusí vývojář napsat žádný zdrojový kód. Ovšem pozor, toto neplatí zcela. Cocoa Bindings nepokrývá veškeré možnosti, jež lze realizovat při použití zdrojového kódu jako tvůrce uživatelského prostředí aplikace.

Akce a Outlety 
V Cocoa se interakce s uživatelským rozhraním navrženým v nástroji Interface Builder řeší prostřednictvím tzv. akcí a outletů.

Akce 
Akce jsou metody, které lze provést jako přímý výsledek interakce s uživatelem – například stisknutí tlačítka.
 ukázka akce, která po stisknutí tlačítka změní obsah textu na Hello World.

Ukázka v jazyku Objective-c 
(IBAction)buttonPressed: (id)sender{
      NSString *labelText = [NSString stringWithFormat:@"Hello World"];
      [self.label setStringValue:labelText];}
}

Ukázka v jazyku Swift 
@IBAction func buttonPressed(sender: AnyObject) {
  let text="Hello World"
  label.text="\(text)"
}

Outlety 
Outlety jsou ukazatele na objekty v Interface Builderu, jejíž prostřednictvím můžete k těmto objektům přistupovat ze zdrojového kódu – například měnit popisky

Ukázka v jazyku Objective-c 
      @property (weak) IBOutlet NSTextField *label;
      @property (weak) IBOutlet NSButton *button;

Ukázka v jazyku Swift 
@IBOutlet weak var label: NSLabel!
@IBOutlet weak var button: NSButton!

Správa paměti 
V Cocoa od začátku bylo nutné, aby si programátor sám alokoval a uvolňoval paměť. To bylo často zdrojem chyb. V dnešní době kdy už je výkon počítačů velký je k dispozici automatická správa paměti. Společnost Apple zavedla s příchodem druhé verze jejich jazyka Objective-C 2.0 v roce 2006 tzv. Garbage Collector, který měl na starosti automatickou správu paměti. Avšak Garbage collector byl nahrazen novější správou paměti ARC (Automatic reference counting) ve verzi operačního systému OS X 10.8 Mountain Lion v roce 2012.

Reference

Externí odkazy 
 Cocoa fundamentals– případné další informace

Software