Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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. Mobilní aplikace Blíže hardwaru Omezené prostředí UI – počítání pozic

    na obrazovce, animace On-line/off-line, synchronizace stavu
  2. Zdarma $99 ročně IDE Simulátor Lze vyvinout plnohodnotnou aplikaci Aplikace


    na vlastním iOS zařízení Distribuce betatesterům App Store
  3. .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ů.
  4. Hlavičkový soubor @interface Foo @property (nonatomic, strong) Bar* barProperty; @property

    (nonatomic, strong) Baz* bazProperty; +(NSString*)staticMethod; -(void)instanceMethod; @end
  5. .m soubor @interface Foo () @property (nonatomic, strong) Bar* privateProperty;

    @end @implementation Foo -(void)instanceMethod { // tělo metody } @end
  6. 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.
  7. 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í.
  8. 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ů.
  9. Bloky – anonymní funkce PHP function () { return 'foo';

    }; Objective-C fuckingblocksyntax.com
  10. 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.
  11. 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í.
  12. 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.
  13. Kategorie – extension methods @implementation Person (PersonNameDisplayAdditions)
 
 -(NSString *)fullName


    { return [NSString stringWithFormat:@"%@, %@", self.firstName, self.lastName]; } @end
  14. 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.
  15. 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.
  16. 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.
  17. 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é.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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
  23. Zdroje ke studiu iTunes U – Stanford kurz iOS WWDC

    videa objc.io iosdevweekly.com WWDC videa jsou dostupná komukoli bez přihlášení