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

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
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
 

Recently uploaded (20)

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
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
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
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.
 

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