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

iOS Development: Everything you need to know

iOS Development: Everything you need to know

This talk was given at ISELTech 2013. The objective was to convince people to embrace iOS Development.

Fábio Bernardo

May 28, 2013
Tweet

More Decks by Fábio Bernardo

Other Decks in Technology

Transcript

  1. Who am I? • iOS Developer • SAPO • @fbbernardo

    on Twitter • iPhoneModem, It’s Playing, SAPO Desporto...
  2. Who am I? • iOS Developer • SAPO • @fbbernardo

    on Twitter • iPhoneModem, It’s Playing, SAPO Desporto...
  3. Who am I? • iOS Developer • SAPO • @fbbernardo

    on Twitter • iPhoneModem, It’s Playing, SAPO Desporto...
  4. Who am I? • iOS Developer • SAPO • @fbbernardo

    on Twitter • iPhoneModem, It’s Playing, SAPO Desporto...
  5. Why am I here? Talk overview • A little bit

    of history • What you need to know about the  App Store • The first steps of iOS Development • Cocoa Touch • What are my expectations for The Future™ • Q&A
  6. The first iPhone June, 2007 • No App Store •

    Do web apps! ▪ Adventurous developers start using something called the “toolchain” • The jailbreak community is born • Installous and Cydia
  7. The iPhone OS SDK July, 2008 • Developers everywhere rejoice

    • Cocoa Touch and Objective-C • Protected by NDA until October, 2008 • 70% – 30% revenue model • Introduced the Review Process • No video or audio recording, no notifications, no copy paste, no share, no core data, no maps... • Later renamed to iOS SDK
  8. iOS App Store Downloads and number of apps 0 200

    400 600 800 2008 2009 2010 2011 2012 2013 0 11,250 22,500 33,750 45,000 10 1,500 5,000 15,000 25,000 45,000 0.8 65 250 425 550 800 Apps Available (Thousands) Downloads (Millions)
  9. iOS App Store Interesting data • The top category by

    revenue ($) is Games • “iOS App Store generated 2.6x the app revenue of Google Play in Q1 2013” • Education is the fourth largest category in revenue ($) • Flipboard has 56M users and only two apps • Instagram has 100M users and only two apps • $10,000 prize for the App Store’s 50 billionth download
  10. What you will need To become an iOS Developer •

    OS X • Objective-C • Cocoa Touch • An iPad/iPhone/iPod Touch for testing (unless you’re doing a fart app) • Register on Dev Center • $99 per year
  11. Popular alternatives To OS X or Objective-C • RubyMotion —

    $199.99 (OS X) • Xamarin.iOS – formely MonoTouch — Free to $1899 (OS X & Windows) • Titanium — Free (OS X) • Adobe AIR — $249.00 (OS X & Windows) • Unity — $400 Free (OS X & Windows)
  12. Objective-C Introduction • Unusual syntax • C based • Weak

    and dynamic typing • ARC • Categories • Swizzling
  13. Objective-C The usual rants • Syntax • Crash logs &

    exceptions • Header files • Memory management • No packages
  14. Objective-C An example – arguments & message names object.performAction(arg1, arg2);

    Object Method name [object performAction:arg1 withArg:arg2]; 1st parameter 2nd parameter
  15. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  16. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  17. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  18. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  19. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  20. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  21. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  22. Cocoa Touch What it is • An umbrella term for

    a lot of API’s • Follows MVC • Lot’s of delegates, datasources, observers, notifications... • UIKit – buttons, sliders, navigation bars, toolbars, spinning wheels, bar buttons, storyboards... • GameKit, PassKit, CoreAnimation, Accounts, etc...
  23. iOS Development Some notes • An iPhone & iPad application

    is an universal binary • 99% is reusable between iPhone and iPad • Easily ported to OSX • Game Center is your friend if you’re planning to make a game
  24. Learn more The best resources out there • Stanford’s iPhone

    Application Development • Big Nerd Ranch’s iOS Programming • WWDC Sessions
  25. Bingo! There’s this thing called WWDC Bingo... Retina Display Macbook

    Air iOS 7.0 Redesigned Passbooks via Bluetooth LE Interactive Push Notifications Retina iPad Mini Remote View Controllers One More Thing™ “Deliver Once” Notifications “magical” Siri API iCloud done right Apple TV SDK Siri for OSX Maps for OSX iCloud Sharing ?
  26. Q&A