iPhone Development Overview

Post on 28-Jan-2015

103 views 0 download

description

A whirlwind tour of iPhone development.

Transcript of iPhone Development Overview

Are you ready for mobile 2.0?

iPhone Development

a whirlwind tour of iPhone development

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. Profile2. Find bottlenecks3. Fix4. 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