Cocoa: Porovnání verzí

Smazaný obsah Přidaný obsah
mBez shrnutí editace
m wikify, upravy, cistka
Řádek 1:
{{wikifikovat}}
 
{{Infobox programovací jazyk
|název = Cocoa
Řádek 10 ⟶ 8:
}}
 
'''Cocoa'''<ref name="Cocoa">[https://developer.apple.com/technologies/mac/cocoa.html]</ref> je sada [[Objektově orientované programování|objektově orientovaných]] [[framework|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 zde v té či oné podobě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|frameworků]]. Nejdůležitější jsou ale tyto tří hlavní frameworky.
=== Foundation ===
Framework [[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 [[integer|integeru]] přes [[float]] až po datum nebo kalendář.
*[[XML]]
*Strings, zde se nachází textové řetězce.
*Collections, [[Kolekce (abstraktní datový typ)|kolekce]] jsou [[objekt|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í systém|operačního systému]].
*Notifications
*Archiving anda serializationserializace
*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ásvývojáře. AppKit obsahuje víc než 125 tříd a protokolů. Framework se dělí na:<br>
*User Interface, zde se nachází všechny objekty uživatelského rozhraní jako ''NSAplication'', ''NSWindow'', ''NSView'', ''NSPanel'', ''NSMenu'', ''NSBox'', ''NSScrollView'', ''NSTableView'', ''NSButton''.
*FontsFonty (''NSText'', ''NSTextView'', ''NSTextField'', ''NSFont'')
*Graphics anda 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|Model-View-Controller]] je softwarová architektura, která odděluje [[datový model]], [[logika|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 můžemevývojář může modelovat data naší aplikace. Pro View Cocoa má framework AppKit, ten nám umožňuje pomocí nástroje Interface Builder navrhnout uživatelské rozhraní aplikace. Pro Controller, což je logika aplikace, využívámevyužívá vlastní zdrojový kód. Nyní však už vývojář nemusí psát ani čárku kódukód, abychomaby napsalinapsal vlastní program a to díky technologii Cocoa Bindings.
==Cocoa Bindings ==
Technologie ''Cocoa Bindings vám'' 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 modeu{{kdo?}} více méně automaticky. Stačí, když rámci řeknetevývojář sdělí, se kterým řídícím objektem má spolupracovat a který řetězec má používat jako klíč pro získávání a nastavování hodnoty. Zjednodušeně lze říci, že vlastně nemusítevývojář nemusí napsat žádný zdrojový kód.
==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:
==== Ukázka v jazyku [[Objective-C|Objective-c]]: ====
- (IBAction)buttonPressed: (id)sender{<br>
NSString *labelText = [NSString stringWithFormat:@"Hello World"];<br>
[self.label setStringValue:labelText];}<br>
}<br>
 
*ukázka v jazyku swift:<br>
==== Ukázka v jazyku [[swift|Swift]]: ====
@IBAction func button(sender: AnyObject) {<br>
var text="Hello World"<br>
Řádek 60:
 
=== 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:<br>
==== Ukázka v jazyku Objective-c: ====
@property (weak) IBOutlet NSTextField *label;<br>
@property (weak) IBOutlet NSButton *button;<br>
 
*ukázka v jazyku swift:<br>
==== Ukázka v jazyku Swift: ====
@IBOutlet weak var label: NSLabel!<br>
@IBOutlet weak var button: NSButton!<br>
==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]] tvz. [[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 ==