SlideShare a Scribd company logo
1 of 36
Download to read offline
iPhone Development
                                       a whirlwind tour of iPhone development



       Are you ready for mobile 2.0?

Tuesday, 24 March 2009
Overview
      ‣      Introduction

      ‣      Development Tools

      ‣      Distribution

      ‣      Development Practices




Tuesday, 24 March 2009
introduction



Tuesday, 24 March 2009
Who am I?
      ‣      Tom Adams, CTO & Co-founder, mogeneration

      ‣      Background in mobile, enterprise, HPC, sem. web, PKI

      ‣      On the web

            ‣      http://adams.id.au/blog/

            ‣      http://twitter.com/tomjadams

            ‣      http://www.linkedin.com/in/tomjadams

            ‣      http://github.com/tomjadams




Tuesday, 24 March 2009
mogeneration
      ‣      Founded September 2008

      ‣      Keith Ahern, CEO & Co-founder, ex-News Head of Mobile

      ‣      Offices in Sydney & Brisbane, 4 people, 7 successful projects

      ‣      iPhone, Android, mobile 2.0 web

      ‣      Web

            ‣      http://twitter.com/mogeneration

            ‣      http://github.com/mogeneration/




Tuesday, 24 March 2009
Our work
      ‣      Web

            ‣      The Australian; prior: news.com.au, TrueLocal, moshtix

      ‣      Released

            ‣      OzWeather, Moo Shake!, Xumii

      ‣      Submitted

            ‣      Lingopal, TrueLocal

      ‣      In development

            ‣      Games, books, physics, photography, coupons


Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
Tuesday, 24 March 2009
why iPhone?



Tuesday, 24 March 2009
iPhone
      ‣      What makes the iPhone different?

            ‣      Cool

            ‣      Not normal embedded development

            ‣      Real threading

            ‣      Real OS

            ‣      OpenGL

            ‣      SQL Database

            ‣      Tool


Tuesday, 24 March 2009
tools



Tuesday, 24 March 2009
Development tools
      ‣      Xcode

      ‣      Simulator

      ‣      Interface Builder

      ‣      Terminal

      ‣      Instruments




Tuesday, 24 March 2009
Version control
      ‣      Built in: SVN, Perforce, CVS

      ‣      All the cool kids use git




Tuesday, 24 March 2009
Continuous integration
      ‣      Very important on team projects

      ‣      Release ad hoc builds to clients

      ‣      Canonical App Store release




Tuesday, 24 March 2009
Profiling
      ‣      Rules of profiling

            1.     Profile
            2.     Find bottlenecks
            3.     Fix
            4.     Profile … repeat …

      ‣      Instruments

            ‣      Leaks, memory usage, CPU usage




Tuesday, 24 March 2009
distribution



Tuesday, 24 March 2009
Developer portal
      ‣      Developer centric

      ‣      Team, keys, app ids, certificates, provisioning profiles

      ‣      Be careful of who is an agent!




Tuesday, 24 March 2009
iTunes Connect
      ‣      Release/distribution centric

      ‣      Only for team agents

      ‣      Distribution to app store, sales reporting, tax, etc.




Tuesday, 24 March 2009
practices



Tuesday, 24 March 2009
mogeneration process
      ‣      Sales

            ‣      Proposal

      ‣      Development (iterative)

            ‣      Outline, brief, loose specification

            ‣      Interaction design, wireframes

            ‣      Design, L&F

            ‣      Iterative development

            ‣      Handover


Tuesday, 24 March 2009
Project setup
      ‣      Nomenclature

            ‣      Project, target, product, frameworks, SDKs, static libraries

      ‣      Settings belong at a project level




Tuesday, 24 March 2009
Project layout
             $(SRCROOT)/
                   Resources
                   Source/External
                   Source/Main/[Models, Services, Views, …]
                   Source/Test/[Models, Services, Views, …]




Tuesday, 24 March 2009
Code
      ‣      Objective-C has a weak type system, don’t be too fancy

      ‣      Strong typing is good

      ‣      Beware of using id

      ‣      Good naming is hard with “named” parameters

      ‣      Code styles guides

            ‣      “Introduction to Coding Guidelines for Cocoa”, Apple

            ‣      “Cocoa Style for Objective-C”, Cocoa Dev Central

            ‣      Google


Tuesday, 24 March 2009
Testing
      ‣      OCUnit (SenTest)

      ‣      GTM

      ‣      GHUnit

      ‣      UISpec

      ‣      OCMock

      ‣      Hamcrest




Tuesday, 24 March 2009
Quality
      ‣      clang

      ‣      gcov

      ‣      CoverStory




Tuesday, 24 March 2009
Threading
      ‣      Learn to love asynchronicity

      ‣      Don’t block the main thread

      ‣      Use notifications to decouple communications

      ‣      Use an NSOperationQueue to bound # threads




Tuesday, 24 March 2009
Memory management
      ‣      Retain count

      ‣      Learn & follow the rules

            ‣      For each alloc/new/malloc/malloc a release/free

            ‣      Use autorelease sparingly

            ‣      new/create/get

      ‣      Use new autorelease pools in loops, thread, etc.

      ‣      Beware of collection class rules




Tuesday, 24 March 2009
Gotchas
      ‣      The iPhone does not support dynamically linked libraries

      ‣      The simulator uses Mac OS X libraries

      ‣      Simulator has 72dpi, iPhones have 160dpi

      ‣      Remember finger sizes!

      ‣      Don’t use Xcode to manage provision profiles




Tuesday, 24 March 2009
help!



Tuesday, 24 March 2009
Help
      ‣      iPhone Developer Centre

      ‣      Stack Overflow

      ‣      Mobile Orchard (tutorials)

      ‣      http://cocoadev.com/

      ‣      http://cocoadevcentral.com/

      ‣      Google




Tuesday, 24 March 2009
takehome



Tuesday, 24 March 2009
Takehome
      ‣      iPhone is a great device

      ‣      Embrace challenges of a limited device

      ‣      You can still do hardcore tech




Tuesday, 24 March 2009
Projects
      ‣      FunctionalKit

      ‣      Motive




Tuesday, 24 March 2009
Contact
      Tom Adams
      CTO & Co-founder
      tom@mogeneration.com
      http://mogeneration.com/




Tuesday, 24 March 2009

More Related Content

What's hot

State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinDries Buytaert
 
Developer's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsDeveloper's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsAlan Mendelevich
 
Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Nick Richards
 
Nascent tawkon ux design process
Nascent   tawkon ux design processNascent   tawkon ux design process
Nascent tawkon ux design processnascent
 
Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Nick Richards
 
OLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightOLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightSameer Verma
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitChad Udell
 
8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User ExperienceBryan Rieger
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDKmwbrooks
 
7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)Stephen Anderson
 
Introducing Livescribe Tata
Introducing Livescribe  TataIntroducing Livescribe  Tata
Introducing Livescribe Tataaruneshvashist
 
Presenting with Apple Products
Presenting with Apple ProductsPresenting with Apple Products
Presenting with Apple ProductsTodd McKee
 
Thinking Differently About Web Performance
Thinking Differently About Web PerformanceThinking Differently About Web Performance
Thinking Differently About Web PerformanceJames Simpson
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devicesmwbrooks
 
General Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchGeneral Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchJacklyn Burgan
 

What's hot (16)

State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon Austin
 
Developer's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone AppsDeveloper's Guide to Marketing and Monetization of Windows Phone Apps
Developer's Guide to Marketing and Monetization of Windows Phone Apps
 
Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)Designing Moblin For Netbooks (with notes)
Designing Moblin For Netbooks (with notes)
 
Nascent tawkon ux design process
Nascent   tawkon ux design processNascent   tawkon ux design process
Nascent tawkon ux design process
 
Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)Designing Moblin For MIDs (with notes)
Designing Moblin For MIDs (with notes)
 
OLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome NightOLPC presentation for IMSA Welcome Night
OLPC presentation for IMSA Welcome Night
 
Final Cut Pro
Final Cut ProFinal Cut Pro
Final Cut Pro
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience8 Ways to Improve App Store User Experience
8 Ways to Improve App Store User Experience
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDK
 
7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)7 User Experience Lessons from the iPhone (Introducing UX)
7 User Experience Lessons from the iPhone (Introducing UX)
 
Introducing Livescribe Tata
Introducing Livescribe  TataIntroducing Livescribe  Tata
Introducing Livescribe Tata
 
Presenting with Apple Products
Presenting with Apple ProductsPresenting with Apple Products
Presenting with Apple Products
 
Thinking Differently About Web Performance
Thinking Differently About Web PerformanceThinking Differently About Web Performance
Thinking Differently About Web Performance
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devices
 
General Assembly: Sketch Before You Etch
General Assembly: Sketch Before You EtchGeneral Assembly: Sketch Before You Etch
General Assembly: Sketch Before You Etch
 

Similar to iPhone Development Overview

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About YouChris Cornutt
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software★ Selcuk Atli
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyMike Cannon-Brookes
 
Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Jens Brynildsen
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net DevAlex Hung
 
RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09Johnny Bilotta
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...Domingo Suarez Torres
 
20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation projectecomplexx
 
Itag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityItag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityGerard Hartnett
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsXavier Lacot
 
Marcomm 2008 Eng Pdf
Marcomm 2008 Eng PdfMarcomm 2008 Eng Pdf
Marcomm 2008 Eng Pdfluigip
 
MAOW Berlin '09 Keynote
MAOW Berlin '09 KeynoteMAOW Berlin '09 Keynote
MAOW Berlin '09 Keynotereybango
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and StrategyIvo Jansch
 
Ibuildings Cms Talk
Ibuildings Cms TalkIbuildings Cms Talk
Ibuildings Cms Talkdean1985
 
Virtual Collaboration
Virtual CollaborationVirtual Collaboration
Virtual Collaborationraanan
 
Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Zara Alkhudari
 
A practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexA practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexJustin Mclean
 

Similar to iPhone Development Overview (20)

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About You
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software Company
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?Realtime 3D on the web - a toy or a useful tool?
Realtime 3D on the web - a toy or a useful tool?
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net Dev
 
RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09RefreshPhilly Presentation February 09
RefreshPhilly Presentation February 09
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
 
20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project20 Practical tips for a successful internationalisation project
20 Practical tips for a successful internationalisation project
 
Itag Jan09 Agile Coclarity
Itag Jan09 Agile CoclarityItag Jan09 Agile Coclarity
Itag Jan09 Agile Coclarity
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating products
 
Marcomm 2008 Eng Pdf
Marcomm 2008 Eng PdfMarcomm 2008 Eng Pdf
Marcomm 2008 Eng Pdf
 
MAOW Berlin '09 Keynote
MAOW Berlin '09 KeynoteMAOW Berlin '09 Keynote
MAOW Berlin '09 Keynote
 
Mac vs PC
Mac vs PCMac vs PC
Mac vs PC
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
 
Ibuildings Cms Talk
Ibuildings Cms TalkIbuildings Cms Talk
Ibuildings Cms Talk
 
Virtual Collaboration
Virtual CollaborationVirtual Collaboration
Virtual Collaboration
 
Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore Marketo Symptoms you shouldn't ignore
Marketo Symptoms you shouldn't ignore
 
A practical guide to connecting hardware to Flex
A practical guide to connecting hardware to FlexA practical guide to connecting hardware to Flex
A practical guide to connecting hardware to Flex
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

iPhone Development Overview

  • 1. iPhone Development a whirlwind tour of iPhone development Are you ready for mobile 2.0? Tuesday, 24 March 2009
  • 2. Overview ‣ Introduction ‣ Development Tools ‣ Distribution ‣ Development Practices Tuesday, 24 March 2009
  • 4. Who am I? ‣ Tom Adams, CTO & Co-founder, mogeneration ‣ Background in mobile, enterprise, HPC, sem. web, PKI ‣ On the web ‣ http://adams.id.au/blog/ ‣ http://twitter.com/tomjadams ‣ http://www.linkedin.com/in/tomjadams ‣ http://github.com/tomjadams Tuesday, 24 March 2009
  • 5. mogeneration ‣ Founded September 2008 ‣ Keith Ahern, CEO & Co-founder, ex-News Head of Mobile ‣ Offices in Sydney & Brisbane, 4 people, 7 successful projects ‣ iPhone, Android, mobile 2.0 web ‣ Web ‣ http://twitter.com/mogeneration ‣ http://github.com/mogeneration/ Tuesday, 24 March 2009
  • 6. Our work ‣ Web ‣ The Australian; prior: news.com.au, TrueLocal, moshtix ‣ Released ‣ OzWeather, Moo Shake!, Xumii ‣ Submitted ‣ Lingopal, TrueLocal ‣ In development ‣ Games, books, physics, photography, coupons Tuesday, 24 March 2009
  • 12. iPhone ‣ What makes the iPhone different? ‣ Cool ‣ Not normal embedded development ‣ Real threading ‣ Real OS ‣ OpenGL ‣ SQL Database ‣ Tool Tuesday, 24 March 2009
  • 14. Development tools ‣ Xcode ‣ Simulator ‣ Interface Builder ‣ Terminal ‣ Instruments Tuesday, 24 March 2009
  • 15. Version control ‣ Built in: SVN, Perforce, CVS ‣ All the cool kids use git Tuesday, 24 March 2009
  • 16. Continuous integration ‣ Very important on team projects ‣ Release ad hoc builds to clients ‣ Canonical App Store release Tuesday, 24 March 2009
  • 17. Profiling ‣ Rules of profiling 1. Profile 2. Find bottlenecks 3. Fix 4. Profile … repeat … ‣ Instruments ‣ Leaks, memory usage, CPU usage Tuesday, 24 March 2009
  • 19. Developer portal ‣ Developer centric ‣ Team, keys, app ids, certificates, provisioning profiles ‣ Be careful of who is an agent! Tuesday, 24 March 2009
  • 20. iTunes Connect ‣ Release/distribution centric ‣ Only for team agents ‣ Distribution to app store, sales reporting, tax, etc. Tuesday, 24 March 2009
  • 22. mogeneration process ‣ Sales ‣ Proposal ‣ Development (iterative) ‣ Outline, brief, loose specification ‣ Interaction design, wireframes ‣ Design, L&F ‣ Iterative development ‣ Handover Tuesday, 24 March 2009
  • 23. Project setup ‣ Nomenclature ‣ Project, target, product, frameworks, SDKs, static libraries ‣ Settings belong at a project level Tuesday, 24 March 2009
  • 24. Project layout $(SRCROOT)/ Resources Source/External Source/Main/[Models, Services, Views, …] Source/Test/[Models, Services, Views, …] Tuesday, 24 March 2009
  • 25. Code ‣ Objective-C has a weak type system, don’t be too fancy ‣ Strong typing is good ‣ Beware of using id ‣ Good naming is hard with “named” parameters ‣ Code styles guides ‣ “Introduction to Coding Guidelines for Cocoa”, Apple ‣ “Cocoa Style for Objective-C”, Cocoa Dev Central ‣ Google Tuesday, 24 March 2009
  • 26. Testing ‣ OCUnit (SenTest) ‣ GTM ‣ GHUnit ‣ UISpec ‣ OCMock ‣ Hamcrest Tuesday, 24 March 2009
  • 27. Quality ‣ clang ‣ gcov ‣ CoverStory Tuesday, 24 March 2009
  • 28. Threading ‣ Learn to love asynchronicity ‣ Don’t block the main thread ‣ Use notifications to decouple communications ‣ Use an NSOperationQueue to bound # threads Tuesday, 24 March 2009
  • 29. Memory management ‣ Retain count ‣ Learn & follow the rules ‣ For each alloc/new/malloc/malloc a release/free ‣ Use autorelease sparingly ‣ new/create/get ‣ Use new autorelease pools in loops, thread, etc. ‣ Beware of collection class rules Tuesday, 24 March 2009
  • 30. Gotchas ‣ The iPhone does not support dynamically linked libraries ‣ The simulator uses Mac OS X libraries ‣ Simulator has 72dpi, iPhones have 160dpi ‣ Remember finger sizes! ‣ Don’t use Xcode to manage provision profiles Tuesday, 24 March 2009
  • 32. Help ‣ iPhone Developer Centre ‣ Stack Overflow ‣ Mobile Orchard (tutorials) ‣ http://cocoadev.com/ ‣ http://cocoadevcentral.com/ ‣ Google Tuesday, 24 March 2009
  • 34. Takehome ‣ iPhone is a great device ‣ Embrace challenges of a limited device ‣ You can still do hardcore tech Tuesday, 24 March 2009
  • 35. Projects ‣ FunctionalKit ‣ Motive Tuesday, 24 March 2009
  • 36. Contact Tom Adams CTO & Co-founder tom@mogeneration.com http://mogeneration.com/ Tuesday, 24 March 2009