Click here to load reader

iKnowClub ČVUT - Seminář vývoje iOS aplikací

  • View
    1.242

  • Download
    0

Embed Size (px)

DESCRIPTION

Lehký úvod do problematiky jazyka Objective-C a Vývoje iOS aplikací.Prezentace zazněla na první části Semináře vývoje iOS aplikací, který autor pořádal v dubnu 2012 v rámci iKnowClub ČVUT (http://cvut.iknow.eu). Více informací najdete na http://srazy.info/seminar-vyvoje-ios-aplikaci.

Text of iKnowClub ČVUT - Seminář vývoje iOS aplikací

  • Semin vvoje iOS aplikac 1/3 Tom Jukin @InzaJuicymo www.juicymo.cz @JuicymoCZiKnowClub VUT SilliconHill
  • Osnova Co znamen vvoj pro iOS? Objective-C Xcode IDE Architektura iOS aplikaceTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Vvoj pro iOS MacOS (alternativy?) MacBook/iMac Xcode (alternativy?) Objective-C (MacOS i iOS) Apple Developer AccountTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Ekosystm Objective-C 2.0 Cocoa Touch iOS 5.1 Testovn a zazen SimultorTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Objective-C C C++ Objective-CTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Objective-C Kompilovan Staticky typovan OOP Prosted = virtuln stroj Sprva pamti Zsobnkov & potn referenc GC (od Objective-C 2.0) ARC (v LLVM 3.0)Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Objective-C Jednonsobn ddinost C bloky Hlavikov soubory .h .m Kompilace: 1. kompiltor -> .o 2. linker -> .appTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Objective-C Pm podpora C Podpora C++ na rovni kompilace .mm LLVM 3Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Objective-C 2.0 GC Properties Fast EnumerationTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Podobnost s C++ Linkovn (.h a .m soubory) Nutnost eit sprvu pamti (na iOS nen GC, lep situace dky ARC) ARC nen GC! dn pointerov aritmetikaTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Podobnost s Javou Bezpen (skoro, ve smyslu pamti/ pointer, vi C++) Komfort (vt ne C++)Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Podobnost s C# PropertiesTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Syntax pokud je v promnn auto instance tdy Auto pak msto auto.jed(); peme [auto jed];Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Syntax pokud je v promnn auto instance tdy Auto pak msto auto.jed(dopredu, rychle); peme [auto jed:dopredu sRychlosti:rychle];Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • Syntax Definice metody jed() tdy Auto: msto public void jed(String smer, String rychlost) { ... } peme - (void)jed:(NSString *)aSmer sRychlosti: (NSString *)aRychlost { ... } na sprvn msto (do tdy) - a la JavaTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP Tdy a instance Statick a dynamick (instann) Tda: @interface a @implementation inicializtory metody attributy - ivars (privtn/protected) accessory attribut - properties (veejn)Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP Neexistuje abstract Neexistuje protected (na rovni metod a properties) Ale mme .h a .m a linker -> tud to obchzme pomoc vce .h soubor a class extensionsTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Abstract & Protected API = metody & properties, eventueln ivars Public API - v Auto.h (class interface) Protected API (pokud je teba) - v Auto_protected.h (class extension) Private API - v Auto.m nad @implementation (class extension) Abstract API - Soust Protected/Public API, manuln vyhozen vyjmkyTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Inicializtory metoda init() metody initWithXXX() je to konstruktor volme [[Auto alloc] init]; vrt nm novou instanci tdy AutoTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - ivars jsou to atributy (zde jsou attributy td fyzicky uloeny, pokud jsou uloeny) jsou private nebo protected, nikdy public Objective-C je obas/asto dl za ns toho se sname vyuvatTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - [email protected] Auto : DopravniProstredek{ NSArray *_kola; BOOL _rozbite;@protected NSString *_spz;} @endTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Properties Mechanizmus publikovn ivars jsou to gettery a settery definice a implementace @property a @syntetize jsou vdy public pomoc triku s .h soubory a linkovnm mohou bt public, protected i privateTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Properties definuj se v @interface class (td) category (kategorii) class extension (rozen tdy) Objective-C um k property vygenerovat pslunou ivar Mono petovatTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Properties v .h mme @interface Auto : DopravniProstredek{ NSArray *_kola; BOOL _rozbite;@protected NSString *_spz;} @endTom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZiKnowClub VUT SilliconHill
  • OOP - Properties v @interface (za } ped @end) v [email protected] (nonatomic, strong) NSArray *kola;@property (nonatomic, assign, getter=jeRozbite) BOOLrozbite; Tom Jukin - Semin vvoje iOS aplikac 1/3 Juicymo (www.juicymo.cz) @JuicymoCZ iKnowClub VUT SilliconHill
  • O