SlideShare uma empresa Scribd logo
1 de 41
iOS Development:
Everything you need to know
Fábio Bernardo
iOS 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 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
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
Rags to riches
Some examples
Rags to riches
Some examples
Trism
Rags to riches
Some examples
Trism
$250k in two months
Rags to riches
Some examples
iSteam
Rags to riches
Some examples
$100k in two weeks
iSteam
Rags to riches
Some examples
Tap Tap Revenge
Rags to riches
Some examples
1,000,000 downloads in two
weeks
Tap Tap Revenge
Rags to riches
Some examples
Flipboard
Rags to riches
Some examples
52M users and only two
apps
Flipboard
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)
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
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
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)
Objective-C
Introduction
• Unusual syntax
• C based
• Weak and dynamic typing
• ARC
• Categories
• Swizzling
Objective-C
The usual rants
• Syntax
• Crash logs & exceptions
• Header files
• Memory management
• No packages
Objective-C
An example – brackets
object.performAction();
Object Method name
[object performAction];[object performAction];
Objective-C
An example – brackets
object.performAction();
Object Method name
[object performAction];[object performAction];
Objective-C
An example – arguments
object.performAction(arg1);
Object Method name
[object performAction:arg1];
A parameter
Objective-C
An example – arguments & message names
object.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-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}
Objective-C
An example
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...
UIKit
Storyboards
Demo
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
Learn more
The 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...
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
?
Q&A

Mais conteúdo relacionado

Destaque

Introduction to Progamming Applications for the iPhone
Introduction to Progamming Applications for the iPhoneIntroduction to Progamming Applications for the iPhone
Introduction to Progamming Applications for the iPhonerohitnayak
 
How & where to start iOS development?
How & where to start iOS development?How & where to start iOS development?
How & where to start iOS development?Kazi Mohammad Ekram
 
iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomerAndri Yadi
 
AppDevKit for iOS Development
AppDevKit for iOS DevelopmentAppDevKit for iOS Development
AppDevKit for iOS Developmentanistar sung
 
Introduction to iOS Apps Development
Introduction to iOS Apps DevelopmentIntroduction to iOS Apps Development
Introduction to iOS Apps DevelopmentProf. Erwin Globio
 
iOS Development - A Beginner Guide
iOS Development - A Beginner GuideiOS Development - A Beginner Guide
iOS Development - A Beginner GuideAndri Yadi
 

Destaque (9)

Introduction to Progamming Applications for the iPhone
Introduction to Progamming Applications for the iPhoneIntroduction to Progamming Applications for the iPhone
Introduction to Progamming Applications for the iPhone
 
How & where to start iOS development?
How & where to start iOS development?How & where to start iOS development?
How & where to start iOS development?
 
Intro to iOS Development
Intro to iOS DevelopmentIntro to iOS Development
Intro to iOS Development
 
iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for Jasakomer
 
AppDevKit for iOS Development
AppDevKit for iOS DevelopmentAppDevKit for iOS Development
AppDevKit for iOS Development
 
Introduction to iOS Apps Development
Introduction to iOS Apps DevelopmentIntroduction to iOS Apps Development
Introduction to iOS Apps Development
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
iOS Introduction For Very Beginners
iOS Introduction For Very BeginnersiOS Introduction For Very Beginners
iOS Introduction For Very Beginners
 
iOS Development - A Beginner Guide
iOS Development - A Beginner GuideiOS Development - A Beginner Guide
iOS Development - A Beginner Guide
 

Semelhante a iOS Development: Everything you need to know

打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP彼得潘 Pan
 
Sg android dev meetup 2013
Sg android dev meetup 2013Sg android dev meetup 2013
Sg android dev meetup 2013khangtoh
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium IntroNicholas Jansma
 
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師彼得潘 Pan
 
IOSAPPDevelopment 2011CS010103.pptx
IOSAPPDevelopment 2011CS010103.pptxIOSAPPDevelopment 2011CS010103.pptx
IOSAPPDevelopment 2011CS010103.pptxJiminJimin16
 
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptxLecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptxNgLQun
 
Mobile & Wearables Games for Health 2014 Tutorial
Mobile & Wearables Games for Health 2014 TutorialMobile & Wearables Games for Health 2014 Tutorial
Mobile & Wearables Games for Health 2014 TutorialGames for Health Project
 
Xcodeを用いた iPhone/iPadアプリ開発
Xcodeを用いた iPhone/iPadアプリ開発Xcodeを用いた iPhone/iPadアプリ開発
Xcodeを用いた iPhone/iPadアプリ開発一樹 濱崎
 
Xcodeを用いたiPhone/iPadアプリ開発
Xcodeを用いたiPhone/iPadアプリ開発Xcodeを用いたiPhone/iPadアプリ開発
Xcodeを用いたiPhone/iPadアプリ開発ashphy
 
iPhone Camp Birmingham (Bham) - Intro To iPhone Development
iPhone Camp Birmingham (Bham) - Intro To iPhone DevelopmentiPhone Camp Birmingham (Bham) - Intro To iPhone Development
iPhone Camp Birmingham (Bham) - Intro To iPhone Developmentandriajensen
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Danny Preussler
 
I/Oへの期待+海外渡航持ち物Tips
I/Oへの期待+海外渡航持ち物TipsI/Oへの期待+海外渡航持ち物Tips
I/Oへの期待+海外渡航持ち物TipsKenichi Kambara
 
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPIntroduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPKeyLimeTie
 
Life cycle of iPhone application
Life cycle of iPhone applicationLife cycle of iPhone application
Life cycle of iPhone applicationSiva Prasad K V
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyNick Landry
 
Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhonePiTechnologies
 

Semelhante a iOS Development: Everything you need to know (20)

打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP
 
Sg android dev meetup 2013
Sg android dev meetup 2013Sg android dev meetup 2013
Sg android dev meetup 2013
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師
 
Onsg11 iphone
Onsg11 iphoneOnsg11 iphone
Onsg11 iphone
 
IOSAPPDevelopment 2011CS010103.pptx
IOSAPPDevelopment 2011CS010103.pptxIOSAPPDevelopment 2011CS010103.pptx
IOSAPPDevelopment 2011CS010103.pptx
 
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptxLecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
 
Mobile & Wearables Games for Health 2014 Tutorial
Mobile & Wearables Games for Health 2014 TutorialMobile & Wearables Games for Health 2014 Tutorial
Mobile & Wearables Games for Health 2014 Tutorial
 
Xcodeを用いた iPhone/iPadアプリ開発
Xcodeを用いた iPhone/iPadアプリ開発Xcodeを用いた iPhone/iPadアプリ開発
Xcodeを用いた iPhone/iPadアプリ開発
 
Applebu
ApplebuApplebu
Applebu
 
Applebu
ApplebuApplebu
Applebu
 
Xcodeを用いたiPhone/iPadアプリ開発
Xcodeを用いたiPhone/iPadアプリ開発Xcodeを用いたiPhone/iPadアプリ開発
Xcodeを用いたiPhone/iPadアプリ開発
 
iPhone Camp Birmingham (Bham) - Intro To iPhone Development
iPhone Camp Birmingham (Bham) - Intro To iPhone DevelopmentiPhone Camp Birmingham (Bham) - Intro To iPhone Development
iPhone Camp Birmingham (Bham) - Intro To iPhone Development
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
 
I/Oへの期待+海外渡航持ち物Tips
I/Oへの期待+海外渡航持ち物TipsI/Oへの期待+海外渡航持ち物Tips
I/Oへの期待+海外渡航持ち物Tips
 
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPIntroduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
 
Life cycle of iPhone application
Life cycle of iPhone applicationLife cycle of iPhone application
Life cycle of iPhone application
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
 
Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhone
 

Último

A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 

Último (20)

A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

iOS Development: Everything you need to know

  • 1. iOS Development: Everything you need to know Fábio Bernardo iOS Developer @ SAPO
  • 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. Who am I? • iOS Developer • SAPO • @fbbernardo on Twitter • iPhoneModem, It’s Playing, SAPO Desporto...
  • 6. 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
  • 7. 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
  • 8. 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
  • 10. Rags to riches Some examples Trism
  • 11. Rags to riches Some examples Trism $250k in two months
  • 12. Rags to riches Some examples iSteam
  • 13. Rags to riches Some examples $100k in two weeks iSteam
  • 14. Rags to riches Some examples Tap Tap Revenge
  • 15. Rags to riches Some examples 1,000,000 downloads in two weeks Tap Tap Revenge
  • 16. Rags to riches Some examples Flipboard
  • 17. Rags to riches Some examples 52M users and only two apps Flipboard
  • 18. 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)
  • 19. 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
  • 20. 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
  • 21. 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)
  • 22. Objective-C Introduction • Unusual syntax • C based • Weak and dynamic typing • ARC • Categories • Swizzling
  • 23. Objective-C The usual rants • Syntax • Crash logs & exceptions • Header files • Memory management • No packages
  • 24. Objective-C An example – brackets object.performAction(); Object Method name [object performAction];[object performAction];
  • 25. Objective-C An example – brackets object.performAction(); Object Method name [object performAction];[object performAction];
  • 26. Objective-C An example – arguments object.performAction(arg1); Object Method name [object performAction:arg1]; A parameter
  • 27. Objective-C An example – arguments & message names object.performAction(arg1, arg2); Object Method name [object performAction:arg1 withArg:arg2]; 1st parameter 2nd parameter
  • 28. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 29. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 30. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 31. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 32. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 33. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 34. - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setTitle:@"Title" forState:UIControlStateNormal]; [button sizeToFit]; [self.view addSubview:button]; } Objective-C An example
  • 35. 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...
  • 37. Demo
  • 38. 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
  • 39. Learn more The best resources out there • Stanford’s iPhone Application Development • Big Nerd Ranch’s iOS Programming • WWDC Sessions
  • 40. 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 ?
  • 41. Q&A