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

Programování pro iOS z pohledu pythonistu

Milan Cermak
May 01, 2012
200

Programování pro iOS z pohledu pythonistu

Slides from the talk I gave at the python user group meetup in April 2012, Prague, Czech Republic. It's a fast introduction to the world of iOS programming from the perspective of a python developer.

Milan Cermak

May 01, 2012
Tweet

Transcript

  1. Programování pro iOS z pohledu
    pythonistu
    Milan Čermák
    http://milancermak.com
    Tuesday, May 1, 2012

    View Slide

  2. Jak začít?
    Tuesday, May 1, 2012

    View Slide

  3. Jak začít?
    • MacBook + iDevice
    Tuesday, May 1, 2012

    View Slide

  4. Jak začít?
    • MacBook + iDevice
    • Apple Developer Account (€79)
    Tuesday, May 1, 2012

    View Slide

  5. Jak začít?
    • MacBook + iDevice
    • Apple Developer Account (€79)
    • Objective-C + SDK
    Tuesday, May 1, 2012

    View Slide

  6. Objective-C
    Tuesday, May 1, 2012

    View Slide

  7. Objective-C
    • nadstavba ANSI C:
    Tuesday, May 1, 2012

    View Slide

  8. Objective-C
    • nadstavba ANSI C:
    • objects, protocols, categories,
    properties
    Tuesday, May 1, 2012

    View Slide

  9. Objective-C
    • nadstavba ANSI C:
    • objects, protocols, categories,
    properties
    • mnoho jiných příjemných vylepšení
    (@property, ARC, literals, ...)
    Tuesday, May 1, 2012

    View Slide

  10. NSObject *object = [[NSObject alloc] init];
    Tuesday, May 1, 2012

    View Slide

  11. NSObject *object = [[NSObject alloc] init];
    ^ název objektu
    Tuesday, May 1, 2012

    View Slide

  12. NSObject *object = [[NSObject alloc] init];
    ^ metoda (správa)
    Tuesday, May 1, 2012

    View Slide

  13. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    Tuesday, May 1, 2012

    View Slide

  14. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    ^ název funkce
    Tuesday, May 1, 2012

    View Slide

  15. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    ^ typ parametru
    Tuesday, May 1, 2012

    View Slide

  16. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    ^ název parametru
    Tuesday, May 1, 2012

    View Slide

  17. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    ^ návratová hodnota
    Tuesday, May 1, 2012

    View Slide

  18. - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    ^ typ funkce
    Tuesday, May 1, 2012

    View Slide

  19. MCMainView.h
    #import
    @interface MCMainViewController : UIViewController {
    UILabel *nameLabel;
    UIButton *submitButton;
    }
    - (void)submitName;
    @end
    Tuesday, May 1, 2012

    View Slide

  20. MCMainView.m
    #import ”MCMainView.h”
    @implementation MCMainViewController {
    - (void)viewDidLoad {
    ...
    }
    ...
    }
    @end
    Tuesday, May 1, 2012

    View Slide

  21. PEP8?
    Tuesday, May 1, 2012

    View Slide

  22. PEP8
    Tuesday, May 1, 2012

    View Slide

  23. kopírování stylu Applu
    Tuesday, May 1, 2012

    View Slide

  24. Tuesday, May 1, 2012

    View Slide

  25. • vendor prefixes (NSArray, LHTableView)
    Tuesday, May 1, 2012

    View Slide

  26. • vendor prefixes (NSArray, LHTableView)
    • dlouhé názvy metod i protokolů
    Tuesday, May 1, 2012

    View Slide

  27. • vendor prefixes (NSArray, LHTableView)
    • dlouhé názvy metod i protokolů
    • slovesá v názvech metod
    Tuesday, May 1, 2012

    View Slide

  28. • vendor prefixes (NSArray, LHTableView)
    • dlouhé názvy metod i protokolů
    • slovesá v názvech metod
    • typy parametrů v názvech metod
    Tuesday, May 1, 2012

    View Slide

  29. • vendor prefixes (NSArray, LHTableView)
    • dlouhé názvy metod i protokolů
    • slovesá v názvech metod
    • typy parametrů v názvech metod
    • návratové hodnoty v názvech metod
    Tuesday, May 1, 2012

    View Slide

  30. • vendor prefixes (NSArray, LHTableView)
    • dlouhé názvy metod i protokolů
    • slovesá v názvech metod
    • typy parametrů v názvech metod
    • návratové hodnoty v názvech metod
    • řazení dle abecedy (alespoň v dokumentaci)
    Tuesday, May 1, 2012

    View Slide

  31. UITableView
    insertRowAtIndexPaths:withRowAnimation:
    UITableViewDelegate
    tableView:accessoryButtonTappedForRowWithIndexPath:
    Tuesday, May 1, 2012

    View Slide

  32. stdlib?
    Tuesday, May 1, 2012

    View Slide

  33. iOS SDK ftw!
    Tuesday, May 1, 2012

    View Slide

  34. Tuesday, May 1, 2012

    View Slide

  35. • networking
    Tuesday, May 1, 2012

    View Slide

  36. • networking
    • CoreData, CoreAudio, CoreLocation, ...
    Tuesday, May 1, 2012

    View Slide

  37. • networking
    • CoreData, CoreAudio, CoreLocation, ...
    • OpenGL
    Tuesday, May 1, 2012

    View Slide

  38. • networking
    • CoreData, CoreAudio, CoreLocation, ...
    • OpenGL
    • senzory
    Tuesday, May 1, 2012

    View Slide

  39. • networking
    • CoreData, CoreAudio, CoreLocation, ...
    • OpenGL
    • senzory
    • Cocoa Touch
    Tuesday, May 1, 2012

    View Slide

  40. Vývojové nástroje
    Tuesday, May 1, 2012

    View Slide

  41. XCode
    Tuesday, May 1, 2012

    View Slide

  42. Tuesday, May 1, 2012

    View Slide

  43. XCode ale musíme používat
    Tuesday, May 1, 2012

    View Slide

  44. iPhone a iPad simulátor
    Tuesday, May 1, 2012

    View Slide

  45. Tuesday, May 1, 2012

    View Slide

  46. Debugging
    Tuesday, May 1, 2012

    View Slide

  47. Debugging
    • TypeError, NameError
    Tuesday, May 1, 2012

    View Slide

  48. Debugging
    • TypeError, NameError
    • žádný REPL
    Tuesday, May 1, 2012

    View Slide

  49. Debugging
    • TypeError, NameError
    • žádný REPL
    • gdb, XCode
    Tuesday, May 1, 2012

    View Slide

  50. Debugging
    • TypeError, NameError
    • žádný REPL
    • gdb, XCode
    • dlouhý fix-run-check
    loop
    Tuesday, May 1, 2012

    View Slide

  51. provisioning profiles, code signing certificates
    Tuesday, May 1, 2012

    View Slide

  52. Tuesday, May 1, 2012

    View Slide

  53. Problémy s certifikáty
    Tuesday, May 1, 2012

    View Slide

  54. Problémy s certifikáty
    • “divné” chyby při kompilování
    Tuesday, May 1, 2012

    View Slide

  55. Problémy s certifikáty
    • “divné” chyby při kompilování
    • přidávání testerů
    Tuesday, May 1, 2012

    View Slide

  56. Problémy s certifikáty
    • “divné” chyby při kompilování
    • přidávání testerů
    • expirace a následné konflikty
    Tuesday, May 1, 2012

    View Slide

  57. Problémy s certifikáty
    • “divné” chyby při kompilování
    • přidávání testerů
    • expirace a následné konflikty
    • distribuce
    Tuesday, May 1, 2012

    View Slide

  58. Distribuce
    Tuesday, May 1, 2012

    View Slide

  59. Distribuce
    • testerům přes TestFlight
    Tuesday, May 1, 2012

    View Slide

  60. Distribuce
    • testerům přes TestFlight
    • uživatelům přes AppStore
    Tuesday, May 1, 2012

    View Slide

  61. Dobré věci
    Tuesday, May 1, 2012

    View Slide

  62. Dobré věci
    • oficiální dokumentace
    Tuesday, May 1, 2012

    View Slide

  63. Dobré věci
    • oficiální dokumentace
    • neoficiální dokumentace
    Tuesday, May 1, 2012

    View Slide

  64. Dobré věci
    • oficiální dokumentace
    • neoficiální dokumentace
    • komunita
    Tuesday, May 1, 2012

    View Slide

  65. Dobré věci
    • oficiální dokumentace
    • neoficiální dokumentace
    • komunita
    • externí knihovny
    Tuesday, May 1, 2012

    View Slide

  66. shameless plug
    mDevCamp
    26. 5. na FF UK
    http://mdevcamp.cz
    Tuesday, May 1, 2012

    View Slide

  67. Děkuju. Otázky?
    Tuesday, May 1, 2012

    View Slide