$30 off During Our Annual Pro Sale. View Details »

Vývoj iOS aplikací pro webaře

Vývoj iOS aplikací pro webaře

Ondřej Mirtes

January 08, 2015
Tweet

More Decks by Ondřej Mirtes

Other Decks in Programming

Transcript

  1. Vývoj iOS aplikací

    pro webaře
    Ondřej Mirtes

    View Slide

  2. Webový vývoj
    Request
    Výběr a transformace dat
    Response
    Bezestavovost, izolované requesty

    View Slide

  3. Mobilní aplikace
    Blíže hardwaru
    Omezené prostředí
    UI – počítání pozic na obrazovce, animace
    On-line/off-line, synchronizace stavu

    View Slide

  4. Apple hardware, OS X, Xcode

    View Slide

  5. Zdarma $99 ročně
    IDE
    Simulátor
    Lze vyvinout
    plnohodnotnou
    aplikaci
    Aplikace

    na vlastním iOS
    zařízení
    Distribuce
    betatesterům
    App Store

    View Slide

  6. C
    C++ Objective-C

    View Slide

  7. .h .m
    Hlavičkový
    soubor
    Veřejné
    metody

    a properties
    Implementace

    + privátní
    metody

    a properties
    Každá třída se skládá ze dvou souborů.

    View Slide

  8. Hlavičkový soubor
    @interface Foo
    @property (nonatomic, strong) Bar* barProperty;
    @property (nonatomic, strong) Baz* bazProperty;
    +(NSString*)staticMethod;
    -(void)instanceMethod;
    @end

    View Slide

  9. .m soubor
    @interface Foo ()
    @property (nonatomic, strong) Bar* privateProperty;
    @end
    @implementation Foo
    -(void)instanceMethod
    {
    // tělo metody
    }
    @end

    View Slide

  10. Volání metody
    PHP
    $obj->someMethod();
    Objective-C
    [obj someMethod];
    Objective-C používá hranaté závorky, aby nedocházelo

    ke konfliktům, protože historicky vychází z C syntaxe.

    View Slide

  11. Volání metody
    PHP
    $obj->someMethod($foo);
    Objective-C
    [obj someMethod:foo];

    View Slide

  12. Volání metody
    PHP
    $obj->someMethod($foo, $bar);
    Objective-C
    [obj someMethod:foo andBar:bar];
    Pokud voláte metodu s více parametry, název druhého

    a dalšího parametru uvádíte při volání.

    View Slide

  13. someMethod:andBar:
    canPerformSegueAction:
    fromViewController:
    withSender:
    webView:
    shouldStartWithRequest:
    navigationType:
    Názvy metod se uvádějí i se svými parametry. Za každou
    dvojtečku při volání patří předaná hodnota. V místě volání pak
    význam neidentifikujete jen pomocí pořadí, ale i podle názvu,
    což zpřehledňuje metody s větším množstvím parametrů.

    View Slide

  14. Volání funkce
    PHP
    dump($foo);
    Objective-C
    NSLog(foo);
    Funkce jsou C-čkovské, zde tedy syntaxe mohla být
    zachována

    View Slide

  15. Bloky – anonymní funkce
    PHP
    function () {
    return 'foo';
    };
    Objective-C
    fuckingblocksyntax.com

    View Slide

  16. View Slide

  17. Delegate
    Property delegate na objektech
    UITableViewDelegate
    „Jak má být vysoký řádek č. 22?“
    „Mám zobrazovat v tabulce nadpisy sekcí?“
    „Uživatel vybral řádek č. 4“

    Delegates slouží ke snížení provázanosti kódu, objekty
    informují o svém stavu a ptají se, jak se mají zachovat, objektu
    předaného do delegate property.

    View Slide

  18. Protokol – interface
    @protocol FooDelegate
    @required
    -(BOOL)shouldHighlightRow:(NSInteger)row;
    @optional
    -(void)selectedRow:(NSInteger)row;
    -(void)deselectedRow:(NSInteger)row;
    @end
    Pokud voláte metody, jejichž implementace je volitelná, musíte
    se nejdříve pomocí reflexe zeptat, zdali existují.

    View Slide

  19. Protokol – interface
    PHP
    class Foo implements BarDelegate
    Objective-C – v .h souboru
    @interface Foo

    View Slide

  20. Kategorie – extension
    methods
    @interface Person (PersonNameDisplayAdditions)
    -(NSString *)fullName;
    @end
    Pro doplnění veřejných metod do tříd, které nemůžeme měnit –
    knihovny třetích stran, systémové frameworky.

    View Slide

  21. Kategorie – extension
    methods
    @implementation Person (PersonNameDisplayAdditions)


    -(NSString *)fullName

    {
    return [NSString stringWithFormat:@"%@, %@",
    self.firstName, self.lastName];
    }
    @end

    View Slide

  22. ARC
    Objective C nemá garbage collector
    strong vs. weak
    Vyvarovat se retain cyklů
    Nástroje pro debugging
    Systém uvolní objekt, na který nevedou žádné strong
    reference.

    View Slide

  23. Vícevláknové programování
    Hlavní vlákno
    *klik*
    UI čeká,

    uživatel může pracovat
    Předch. operace
    Vedlejší vlákno
    Prezentace

    výsledků
    Hard work
    Programuje se pomocí sériových front, takže se vyvarujete
    zamykání a race conditions. Technologie se nazývá

    Grand Central Dispatch.

    View Slide

  24. UIKit
    Label
    Komponenty pro UI nativních aplikací. Získáváte s nimi
    konzistentní chování napříč celým systémem, zdarma
    vyřešenou přístupnost.

    View Slide

  25. Storyboard
    UI navrhujete v Interface Builderu v Xcode. 

    Ne vše v něm jde nakonfigurovat, zbytek se řeší v kódu.

    Celé UI jde napsat v kódu bez využití Storyboardů,

    je to ale pracnější a méně pohodlné.

    View Slide

  26. Autolayout
    Řešení Applu pro návrh UI

    pro různě velké displeje.
    Každý prvek dostane sadu
    omezení, podle kterých je mu
    nastavována pozice a velikost.
    Pokud Autolayout nevyužijete,
    musíte detekovat použité
    zařízení a všechny souřadnice
    počítat a nastavovat v kódu
    manuálně.
    Vývojové prostředí obsahuje
    sadu nástrojů pro debugging.

    View Slide

  27. Size classes
    Využití stejného UI napříč různými kategoriemi zařízení,
    funguje podobně jako responsive web design. Nastavení
    autolayoutu můžete zapnout jen pro určité size classes.

    View Slide

  28. CoreAudio
    CoreAnimation
    CoreMotion
    MapKit
    HealthKit
    Keychain
    TextKit
    CoreLocation
    CoreData
    UIKit
    Systém obsahuje frameworky pro práci se vším, na co si
    vzpomenete. Pokud rozumíte syntaxi a základním
    principům, nebude pro vás problém je začít používat.

    View Slide

  29. CocoaPods
    platform :ios, '8.0'
    pod 'FMDB/standalone', '~> 2.1'
    pod 'RHAddressBook', '~> 1.0.1'
    pod 'FCModel', :head
    pod 'PiwikTracker', :head
    Nástroj pro správu závislostí na knihovnách třetích stran.
    Podobný Composeru.

    View Slide

  30. Swift
    Nový moderní jazyk od Applu, syntaxe podobná Scale.
    Bezpečnější, ale ne jednodušší jazyk.

    Generika, optionals, funkcionální prvky.


    Bez Objective-C se zatím neobejdete – ekosystém, principy
    jsou podobné. Swift také nemá garbage collector.


    Objective-C bridge – se Swiftem může být v jedné aplikaci

    View Slide

  31. Swift
    Materiály na iBookstore

    View Slide

  32. Zdroje ke studiu
    iTunes U – Stanford kurz iOS
    WWDC videa
    objc.io
    iosdevweekly.com
    WWDC videa jsou dostupná komukoli bez přihlášení

    View Slide

  33. @OndrejMirtes

    View Slide