• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
iOS Development: Everything you need to know
 

iOS Development: Everything you need to know

on

  • 287 views

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

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

Statistics

Views

Total Views
287
Views on SlideShare
287
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    iOS Development: Everything you need to know iOS Development: Everything you need to know Presentation Transcript

    • iOS Development:Everything you need to knowFábio BernardoiOS Developer @ SAPO
    • Who am I?• iOS Developer• SAPO• @fbbernardo on Twitter• iPhoneModem, It’s Playing, SAPO Desporto...
    • Who am I?• iOS Developer• SAPO• @fbbernardo on Twitter• iPhoneModem, It’s Playing, SAPO Desporto...
    • Who am I?• iOS Developer• SAPO• @fbbernardo on Twitter• iPhoneModem, It’s Playing, SAPO Desporto...
    • Who am I?• iOS Developer• SAPO• @fbbernardo on Twitter• iPhoneModem, It’s Playing, SAPO Desporto...
    • 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
    • The first iPhoneJune, 2007• No App Store• Do web apps!▪ Adventurous developers start using something called the “toolchain”• The jailbreak community is born• Installous and Cydia
    • The iPhone OS SDKJuly, 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
    • Rags to richesSome examples
    • Rags to richesSome examplesTrism
    • Rags to richesSome examplesTrism$250k in two months
    • Rags to richesSome examplesiSteam
    • Rags to richesSome examples$100k in two weeksiSteam
    • Rags to richesSome examplesTap Tap Revenge
    • Rags to richesSome examples1,000,000 downloads in twoweeksTap Tap Revenge
    • Rags to richesSome examplesFlipboard
    • Rags to richesSome examples52M users and only twoappsFlipboard
    • iOS App StoreDownloads and number of apps02004006008002008 2009 2010 2011 2012 2013011,25022,50033,75045,00010 1,5005,00015,00025,00045,0000.865250425550800Apps Available (Thousands) Downloads (Millions)
    • iOS App StoreInteresting 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
    • What you will needTo 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
    • Popular alternativesTo 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)
    • Objective-CIntroduction• Unusual syntax• C based• Weak and dynamic typing• ARC• Categories• Swizzling
    • Objective-CThe usual rants• Syntax• Crash logs & exceptions• Header files• Memory management• No packages
    • Objective-CAn example – bracketsobject.performAction();Object Method name[object performAction];[object performAction];
    • Objective-CAn example – bracketsobject.performAction();Object Method name[object performAction];[object performAction];
    • Objective-CAn example – argumentsobject.performAction(arg1);Object Method name[object performAction:arg1];A parameter
    • Objective-CAn example – arguments & message namesobject.performAction(arg1, arg2);Object Method name[object performAction:arg1 withArg:arg2];1st parameter 2nd parameter
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • - (void)viewDidLoad {[super viewDidLoad];UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];[button setTitle:@"Title" forState:UIControlStateNormal];[button sizeToFit];[self.view addSubview:button];}Objective-CAn example
    • Cocoa TouchWhat 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...
    • UIKitStoryboards
    • Demo
    • iOS DevelopmentSome 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
    • Learn moreThe best resources out there• Stanford’s iPhone Application Development• Big Nerd Ranch’s iOS Programming• WWDC Sessions
    • Bingo!There’s this thing called WWDC Bingo...RetinaDisplayMacbook AiriOS 7.0RedesignedPassbooksviaBluetoothLEInteractivePushNotificationsRetina iPadMiniRemoteViewControllersOne MoreThing™“DeliverOnce”Notifications“magical” Siri APIiCloud donerightApple TVSDKSiri for OSXMaps forOSXiCloudSharing?
    • Q&A