Začínáme programovat v Cocoa aneb v čem je MacOS X opravdu lepší než Windows - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Software

Začínáme programovat v Cocoa aneb v čem je MacOS X opravdu lepší než Windows

12. února 2002, 00.00 | Chcete napsat váš první program za 20 minut? Máte Mac OS X? Ukážeme vám, jak snadné to může být - nebojte se a klidně vstupte... Snadnější to totiž už být nemůže!

Nejdříve bych chtěl podotknout, že se nepovažuji za programátora. Bohužel, nemám na to čas. Je to jen výstraha pro ty, kteří si o sobě myslí, že programátoři jsou a že by určitě uměli napsat to, co vám tady ukážu, lépe. Odpovědí je, určitě ano. A prosba - napište do příspěvků pod článkem, jak na to, rád se něco přiučím.

Další věc, kterou bych chtěl hned na začátku podotknout, je to, že už jsem trochu otrávený z těch sporů, které se vedou mezi "mekisty" a těmi ostatními. Jedni říkají, že jsou počítače Apple lepší na grafiku, druzí zase nevidí dostatek utilitek, které by něco užitečného dělaly. Takže, pojďme udělat sázku. Vsaďme se, že programovat pro Maca je snazší, než pro Windows. Jako úvod, jen pro to, abych vás zatáhl do problematiky, si napíšeme takový jednodušší TextEdit. Už vidím ty zděšené obličeje rádoby programátorů pro Okna: "Cože, začneme s textovým editorem? To není zrovna nejjednodušší program..." Pokud použijeme Cocoa, uvidíte, že nemají pravdu.

Co budeme potřebovat?

Počítač s nainstalovaným OS X, nainstalované vývojářské nástroje a dvacet minut času... Já budu používat OS X 10.1.3 (5Q39), ProjectBuilder 1.1.1 a InterfaceBuilder 2.2. Takže, držte si klobouky, jedeme z kopce!


Vytvoříme novy projekt

Nastavení projektu

Nejdříve spustíme ProjectBuilder (PB). Vytvoříme nový projekt, ze seznamu vybereme "Cocoa Document-based Application". Projekt nazveme třeba "MujMac TextEdit" a stiskneme tlačítko "Finish".

Po chvíli se objeví okno, které sdružuje veškeré zdrojové soubory k našemu projektu. Jako první věc nastavíme všechny informace o projektu. Klikněte na záložku "Targets", vyberte v levé horní části okna náš projekt - "MujMac TextEdit" a opište nastavení tak, jak je vidět na obrázku.


Po kliknutí se zobrazí v novém okně plná velikost

Krátké vysvětlení k zadávaným položkám:

Identifier - by měl být ve formátu stát.developer.produkt, takže cz.mujmac.TextEdit. Později najdeme pod tímto označením v ~/Library/Preferences předvolby k našemu programu
Signature - kód vývojáře, měl by se registrovat u Apple
Document Type Extensions - mujmac, to bude přípona našich souborů
Document Type OS Type - starý MacOS Typ souboru
Document Type Role - Editor, tím říkáme, že umíme soubory s příponou .mujmac číst i zapisovat
Pokud si chcete prohlédnout i další nastavení, klidně to udělejte, ale my ostatní prozatím s nastavením projektu končíme.

První řádky kódu

Tak, co kdybychom konečně napsali nějaký ten kód? Nebojte, rozjezd bude opravdu krátký. Předpokládám, že máte otevřený náš projekt a vybranou záložku "Files". Najděte soubor MyDocument.h a upravte ho tak, jak vidíte v následujícím odstavci:

@interface MyDocument : NSDocument
{
    IBOutlet NSTextView	*textView;
    NSString		*obsah;
}
@end

A je to. Ta první řádka znamená, že v Interface Builderu (IB) vytvoříme objekt NSTextView, který budeme nadále nazývat jménem textView. A to, co je uvnitř, bude typu NSString a budeme tomu říkat obsah. Snadné, že?

Okno

Nyní je na řadě přidělat také nějaké grafické objekty. V projektu si najděte skupinu Resources a poklepejte na ikonku MyDocument.nib, měl by se vám otevřít program Interface Builder a okno, které má uprostřed napsán text. Ten můžete samozřejmě smazat. Teď se přepněte zpět do PB, chytněte ikonku souboru MyDocument.h a přetáhněte ji do okna IB.

Z paletky s objekty vytáhněte TextView a hoďte ho do našeho okna. Pak upravte velikost tak, aby bylo TextView od kraje do kraje na všech stranách. Předpokládám, že vidíte také paletku "Inspector", ve které z menu vyberte položku "Size" a nastavte ji tak, jak vidíte na obrázku.

Když teď zmáčknete Apple+R, dostanete se do náhledového zobrazení, takže si můžete vyzkoušet, jak se textView chová. Pokud jste nastavili vše tak, jako já, můžete zvětšovat okno a textView se zvětšuje s ním. Následující kroky jsou velmi důležité. Jsme stále v IB, vyberte v dolním okně, které se jmenuje MyDocument.nib záložku "Instances". Teď zmáčkněte klávesu Ctrl, najeďte myší na ikonku "File's Owner" a táhněte myší k našemu oknu.

Ve chvíli, kdy přejedete nad naše textView, celé se orámuje. Paletka "Inspector" se změní na položku "Connections". V seznamu "Outlets" (přípojky) by měla být vybraná položka textView. Nyní stiskněte tlačítko "Connect" a vedle textView se udělá tečka. Nyní můžete MyDocument.nib uložit a přepnout se zpět do PB.

Zkusíme, jak nám to funguje

V PB, v menu "Build" vybereme "Build and Run". Poprvé trvá kompilace delší dobu, protože se zároveň celý projekt indexuje. Pokud jste neudělali žádnou chybu, proběhne vše bez problémů a za chvilku se spustí program MujMac TextEdit. Vyzkoušejte si všechna menu, jak se program chová. Uvědomte si, že jste zatím napsali jen 2 řádky. Zkuste několikrát zmáčknout Apple+N a něco napsat do našeho textView. Třeba česky...

Další kód

Při testování jste jistě zjistili, že náš program má několik nedostatků. Ten hlavní a nejdůležitější je ten, že neumí ukládat ani číst soubory, které sám vyrobí. A to teď doděláme. Najděte si soubor MyDocument.m. V něm proveďte tyto úpravy:

- (NSData *)dataRepresentationOfType:(NSString *)aType
{
    // Insert code here to write your document from the given data. 
You can also choose to override -fileWrapperRepresentationOfType:
or -writeToFile:ofType: instead.
    return [[textView string] dataUsingEncoding:NSUnicodeStringEncoding];
}
řádka, začínající // je komentář, takže ta nás nezajímá. Říká se v ní, že touto funkcí máme ukázat data, která se budou ukládat.
[textView string] = řetězec znaků napsaných v textView
dataUsingEncoding:NSUnicodeStringEncoding = používáme Unicode
celá fuknce tedy z ní: vracíme řetězec znaků napsaných v textView s Unicode kódováním
O samotný proces uložení souboru se systém postará sám.
- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
{
    // Insert code here to read your document from the given data. 
You can also choose to override -loadFileWrapperRepresentation:ofType:
or -readFromFile:ofType: instead.
    obsah = [[NSString alloc] initWithData:data
                                  encoding:NSUnicodeStringEncoding];
    return (nil!=obsah);
}

Tato funkce se používá, když načítáme náš soubor.
nejdříve vytvoříme proměnnou obsah, načteme do ní data a upozorníme systém, že jsme použili při ukládání Unicode. Ta poslední řádka znamená, že pokud se nám úspěšně podařilo vytvořit proměnnou obsah, je výsledek funkce 1, v opačném případě 0.

Další build

Tak, zkusme opět, jak nám program funguje. V menu "Build" vybereme "Build and Run", nyní by vše mělo proběhnout podstatně rychleji.Počkejte, až se program pustí a napište do textView libovolný text. Nyní vyberte z menu "File" položku "Save". Všimněte si, že dialogové okno funguje přesně tak, jak má - když ho zvětšíte do plné velikosti, objevíte vlevo dole přepínač "Hide extension". I to by mělo fungovat správně. Uložte soubor. Nyní ho zkuste otevřít. Nic se nestalo? Respektive otevřelo se okno a nic v něm není? Zkuste soubor hodit na ten originální TextEdit, který dodává Apple. Aha, je v pořádku.
Problém je v tom, že jsme programu neřekli, aby nám obsah vložil do textView. Hned to napravíme.

- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
    [super windowControllerDidLoadNib:aController];
    // Add any code here that need to be executed once the
windowController has loaded the document's window.
    if (obsah)
    {
        [textView setString:obsah];
        [obsah release];
    }
        
}
if (obsah) znamená, pokud máme v proměnné obsah něco, pokračuj dál
[textView setString:obsah] vlož obsah do textView
[obsah release] protože textView vyrobí kopii našeho souboru, můžeme originální proměnou obsah uvolnit, abychom šetřili paměť.

Tak, a jsme hotovi. Schválně kolik jsme napsali řádků? Deset!

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Začínáme s  

 » Rubriky  » Software  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

dotaz

Autor: user Muž

Založeno: 13.02.2002, 22:43
Odpovědí: 0

Je tezke naprogramovat jednoduchy installer ktery by byl spousteny z grafickeho rozhrani? Pokud to bude nametem v dalsim pokracovani, tak se tesim.

Odpovědět na příspěvek

RE: dotaz

Autor: agent Muž

Založeno: 13.02.2002, 23:45

IMHO zalezi co si predstavujes pod pojmem "jednoduchy", ale dam ti priklad, pokud potrebujes nainstalovat treba 50 souboru do ruznych systemovych a uzivatelskych slozek, dat k tomu readme, licenci, vyber disku, a po instalaci treba vyzadovat restart, obejdes se bez programovani uplne -- to vse jde za par minut udelat v PackageMaker.app -- nastroj je free jako soucast vyvojarskeho kitu pro Mac OS X...

Odpovědět na příspěvek

pravda, pravda...

Autor: user Muž

Založeno: 14.02.2002, 00:23

"Jednoduchy" jsem myslel hlavne z pohledu uzivatele, ktery installer spusti a pripadne zvoli nejake options, pokud to je nutne. Pan Cerny tu ma v ramci programovani sanci vytvorit installer na jeho ceskou klavesnici. Urcite bychom mu byli vsichni moc vdecni. :o) Readme a licenci muze vynechat.

Odpovědět na příspěvek

RE: pravda, pravda...

Autor: iJoJo Muž

Založeno: 14.02.2002, 00:44

Tak ako Ti to napisal agent, proste je na to aplikacia PagkageMaker.app, ktora je sucastou Development kitu, Development kit ziskas bud kupou PLNEJ verzie OS X (nie tej dodavanej s pocitacmi), alebo si Developer Toolkit stiahnes z www.apple.com/developer/

Odpovědět na příspěvek

RE: dotaz

Autor: Robert Černý Muž

Založeno: 14.02.2002, 08:43

No,
jde o to, co by to mělo dělat. Pokud se jedna o instalační program ke klávesnici, tak se to dá udělat několika způsoby, od shellu až po PackageMaker. Abych řekl pravdu, nejsem zastáncem uživatelských instalačních programů, protože si myslím, že pokud existuje nástroj prefereovaný od apple, tak by se kvůli kontinuitě vzhledu měl používat. Na druhou stranu, packagemaker měl na začátku jisté problémy s přepisováním práv.
Mimochodem, zajímalo by mne, kam byste chtěli, aby seriálek o programování došel. Mám dál pokračovat s jednoduchým a efektním přidáváním funkcí nebo skutečně začít programovat?

Odpovědět na příspěvek

RE: RE: dotaz

Autor: Paja Muž

Založeno: 14.02.2002, 11:00

Ja bych byl pro ty fce :-)

Odpovědět na příspěvek

RE: RE: RE: dotaz

Autor: Robert Černý Muž

Založeno: 14.02.2002, 14:46

bezva. a jaký? Předpokládám přidělání okna s předvolbami? Co dál?

Odpovědět na příspěvek

RE: RE: RE: RE: dotaz

Autor: agent Muž

Založeno: 14.02.2002, 19:52

nevim, mozna chci moc, ale co treba neco jako ukazky tvorby doplnku pro Dok, doplnku pro menu a nebo taky modul screensaveru...

Odpovědět na příspěvek

RE: RE: RE: RE: dotaz

Autor: Zbynek Muž

Založeno: 22.02.2002, 13:14

Domnivam se, ze pokud by z toho editoru vznikl jednodusi html editor, nebo neco obdobneho (pripadne i s konverzi cestin), tak se domivam, ze by to me programatorske choutky dokonale uspokojilo (tedy alespon prozatim).

Odpovědět na příspěvek

RE: RE: dotaz

Autor: Karel Beneš Muž

Založeno: 16.02.2002, 18:32

Jsem pro klidek - zacit proste od zacatku. Urcite se najdou lidi, co by chteli skutecne programovat, ale pak by to pravdepodobne bylo naprosto nesrozumitelny pro amatery, ktery se to chtej naucit. Profici programatori tenhle serial pravdepodobne potrebovat nebudou.

Odpovědět na příspěvek

jeste k installerum

Autor: Nonejm Muž

Založeno: 14.02.2002, 11:46
Odpovědí: 0

Vsiml jsem si, ze installery od Vise nekdy chteli ukocit vsechny programy a pak teprv zacnou instalovat. V MacOS 9 to je OK, ale v X to skonci na tom ukoncovani... sam nevim, co chce ukoncovat, kdyz nic z aplikaci krom finderu nebezi. Neni to nejaka kravina?

Odpovědět na příspěvek

RE: jeste k installerum

Autor: Martin Ler Muž

Založeno: 14.02.2002, 11:56

POkud jsem to pozoroval, tak to je problem prvnich verzi toho instaleru - napriklad se takto chovaj Corel aplikace, ktere byly jedny z prvnich. U dalsich novejsich programu jsem tento problem nemel. U corelu, pokud to na tom zatuhlo, stacilo obvykle spustit znova.

Odpovědět na příspěvek

RE: RE: jeste k installerum

Autor: Robert Černý Muž

Založeno: 14.02.2002, 14:43

Hrál jsem si jednou z VISE installerem a je tam na to zatrhávátko. Installer nedokáže ukončit process loginwindow a kvůli tomu skončí.

Odpovědět na příspěvek

RE: RE: jeste k installerum

Autor: Nonejm Muž

Založeno: 14.02.2002, 17:50

Nojo, presne tak.. Corel KnockOut2 a KPT effects. Jenze to nejde obejit spustenim znova, nejde killnout ten proces, co mu prekazi.

Odpovědět na příspěvek

RE: RE: RE: jeste k installerum

Autor: Robert Černý Muž

Založeno: 14.02.2002, 18:29

Moje rada je nainstalovat soft pod MacOS 9 a pak zkontrolovat v Systému v položce Application Support, jestli si tam něco nehodila, pokud jo, dát to do OS X do /Library/Application Support

Odpovědět na příspěvek

kde jsou PCmani??

Autor: ushneek Muž

Založeno: 14.02.2002, 15:42
Odpovědí: 0

postrádám kajícné přípěvky Wintelistů!!!
asi tady není nic o chladičích, tak to pro ně není interesantní.

Odpovědět na příspěvek

RE: kde jsou PCmani??

Autor: Viktor N. Muž

Založeno: 17.02.2002, 00:02

Chudáčku malý.

Odpovědět na příspěvek

RE: RE: kde jsou PCmani??

Autor: agent Muž

Založeno: 17.02.2002, 00:10

a to je jako vse?
hele, Vito a vis jak se krasne v masoxu daji delat webservices na .NET ;-))))

Odpovědět na příspěvek

RE: RE: RE: kde jsou PCmani??

Autor: Anybody Muž

Založeno: 07.11.2003, 11:39

Problem je asi v tom, ze ve srovnani s PC ja iMac o hodne drazsi. Ja ted pracuju v C++ hlavne pod Windows, trosku pod Linuxem, a klidne bych zkusil i MacOS X. Prave s Cocoa jsem chtel zacit programatorske experimentovani na MacOS. Ovsem k cemu mi to bude? Mam utratit kolem 100.000,- ci vice jen proto, abych si mohl tento vysokourovnovy jazyk vyzkouset? Krome toho, nejradeji programuju na nejnizsi mozne urovni. Takze k cemu mi bude programovani pod MacOS? K nicemu.

Kdyby byl tento OS alespon multiplatformni. Ovsem neni. Na rozdil od jinych OS. Striktne je postaven pouze na anglictine. Protoze Mac operuje temer vyhradne pouze na americkem trhu.

Takze MacOS je jaksi omezeny i z tohoto uhlu pohledu. To mam jet do ameriky, abych tam ziskal praci jako programator MacOS v Cocoa? Vzdyt ani nedostanu turisticke vizum na tri mesice. Tak jsou americani vysrani.

Takze at si placaji sve utilitky pro svuj OS sami. Rozvoj ve vyvoji aplikaci z celeho sveta, jako je tomu u Linuxu, se kvuli toho nikdy nedockaji.

Odpovědět na příspěvek

RE: RE: RE: RE: kde jsou PCmani??

Autor: Anybody Muž

Založeno: 07.11.2003, 11:42

Omlouvam se. Rekl jsem pet a myslel deset. Zamente prosim slovicko 'multiplatformni' za 's podporou vicejazycnosti, tedy multilanguaged'. Co se multiplatformnosit tyce, jsem rad, ze je Mac svym zpusobem 'jedinecny' prave z tohoto hlediska.

Odpovědět na příspěvek

Nemam rad ludi ktori pisu o niecom co v zivote nevideli

Autor: Rastik Muž

Založeno: 19.12.2003, 12:35

Je vidno ze si maca nevidel ani z rychlika. Podpora jazykov je v OS X ovela lepsia ako vo Windowse. Kludne si mozem zapnut trebars arabsku klavesnicu a zacat pisat v ktoromkolvek programe. A k tej cene - eMac mas za nejakych 30 papierov, takze nepis o niecom, o com nemas ani paru.

Odpovědět na příspěvek

PB

Autor: lubo Muž

Založeno: 23.03.2002, 16:51
Odpovědí: 0

zdravim, mam jeden povedal by som zakladny problem - ProjectBuilder sa mi tak nejak nechce rozbehnut...
ProjectBuil
derWO ide v pohode ale ProjectBuilder nie, nestretol sa niekto s podobnym problemom ?

Odpovědět na příspěvek

rad

Autor: nickcarter Muž

Založeno: 15.03.2006, 13:34
Odpovědí: 0

Nic proti, ale IDE s možností RAD má snad dneska každý prog. jazyk na různých platformách. Čili tohle by sfoukl i MSVB za 20 minut taky:) Nic nového.

Odpovědět na příspěvek

Neni ta syntaxe nejaka krkolomna?

Autor: Vladimír Bureš Muž

Založeno: 21.07.2007, 02:54
Odpovědí: 0

Nevim, mozna je to zpuosbeno neznalosti jazyka, ale syntaxe se mi zda velmi krkolomna napriklad deklarovani promene datovy_typ *nazev je o hodne mene vypovidajici nez nazev: datovy_typ; Ala asi se zvyknout da, nevim ale v cem je ta pridana hodnota naprikad od produktu firmy Borland a jinych vizualnich programovacich nastroju ktere jsou na trhu jiz mnoho let?

Odpovědět na příspěvek

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: