Top Banner
Stanford CS193p Developing Applications for iOS Fall 2010 Stanford CS193p Fall 2010
42
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lecture 1

Stanford CS193p Developing Applications for iOS

Fall 2010

Stanford

CS193p

Fall 2010

Page 2: Lecture 1

Today Logistics Lectures

Communication

Homework / Final Project

Requirements

iOS Overview

MVC Object-Oriented Design Concept

Stanford

CS193p

Fall 2010

Page 3: Lecture 1

Logistics Lectures Tell you (Tuesday) Show you (Thursday)

Let you do it yourself (Homework)

Friday TA Section Practical matters (e.g. debugging) KPCB Entrepreneurship

Special topics (guest lecturers)

Communication http://cs193p.stanford.edu

Lectures, demo code and homework

Class announcements

Homework 7 weekly assignments

Assigned Thursday after lecture

Due the following Wednesday at 11:59pm

Individual work only

Final Project 3 weeks to work on it

Proposal requires instructor approval

Some teams of 2 might be allowed Keynote presentation required (3 mins or so)

Stanford

CS193p

Fall 2010

Page 4: Lecture 1

Requirements Must have a Mac Intel-based Snow Leopard

Hardware Not required for homework

Required for final project (iOS4 or iPad)

iPod Touch loaners available

Textbook Apple on-line documentation http://developer.apple.com

Prerequisites Object-Oriented Programming CS106A&B required, CS107 recommended

Object-Oriented Terms Class (description/template for an object) Instance (manifestation of a class)

Message (sent to objects to make them act)

Method (code invoked by a Message)

Instance Variable (object-specific storage)

Inheritance (code-sharing mechanism)

Superclass/Subclass (Inheritance relationships)

Protocol (non-class-specific method declaration)

You should know these! If you are not very comfortable with all of these, this might not be the class for you

Stanford

CS193p

Fall 2010

Page 5: Lecture 1

iOS4 SDK Required for all homework assignments and final project It’s free!

Download Xcode/SDK from iOS Dev Center at http://developer.apple.com

To run on a device (not just in simulator), you must join a Program iOS Developer University Program = free for Stanford students = Device YES, AppStore NO

Normal Developer Program = $99/year = Device YES, AppStore YES

iOS Developer University Program Enrolled students will receive an invitation to their Stanford e-mail accounts

Follow the directions to join the Program and download the Xcode/SDK (if you haven’t already)

Submit your UDID to the staff via e-mail Valid through the end of the quarter only

Stanford

CS193p

Fall 2010

Page 6: Lecture 1

What will I learn in this course? How to build cool apps Easy to build even very complex applications Result lives in your pocket!

Very easy to distribute your application through the AppStore

Vibrant development community

Real-life Object-Oriented Programming The heart of Cocoa Touch is 100% object-oriented

Application of MVC design model Many computer science concepts applied in a commercial development platform:

Databases, Graphics, Multimedia, Multithreading, Animation, Networking, and much, much

more!

Numerous students have gone on to sell products on the AppStore

Stanford

CS193p

Fall 2010

Page 7: Lecture 1

iOS

Cocoa Touch

Media

Core Services

Core OS

Core OS

OSX Kernel

Mach 3.0

BSD

Sockets

Security

Power Management

Keychain Access

Certificates

File System

Bonjour

Stanford

CS193p

Fall 2010

Page 8: Lecture 1

iOS

Cocoa Touch

Media

Core Services

Core OS

Core Services

Collections Core Location

Address Book Net Services

Networking Threading

File Access Preferences

SQLite URL Utilities

Stanford

CS193p

Fall 2010

Page 9: Lecture 1

iOS

Cocoa Touch

Media

Core Services

Core OS

Media

Core Audio

OpenAL

Audio Mixing

Audio Recording

Video Playback

JPEG, PNG, TIFF

PDF

Quartz (2D)

Core Animation

OpenGL ES

Stanford

CS193p

Fall 2010

Page 10: Lecture 1

iOS

Cocoa Touch

Media

Core Services

Core OS

Cocoa Touch

Multi-Touch

Core Motion

View Hierarchy

Localization

Controls

Alerts

Web View

Map Kit

Image Picker

Camera

Stanford

CS193p

Fall 2010

Page 11: Lecture 1

Platform Components

Interface Builder

Tools Xcode

Language

Frameworks

Design Strategies

[display setTextColor:[UIColor blackColor]];

Foundation UIKit

MVC Stanford

CS193p

Fall 2010

Page 12: Lecture 1

MVC

Controller

Model View

Stanford

CS193p

Fall 2010

Page 13: Lecture 1

MVC

Controller

Model View

Divide objects in your program into 3 “camps.” Stanford

CS193p

Fall 2010

Page 14: Lecture 1

MVC

Controller

Model View

Model = What your application is (but not how it is displayed) Stanford

CS193p

Fall 2010

Page 15: Lecture 1

MVC

Controller

Model View

Controller = How your Model is presented to the user (UI logic)anford CS193p

Fall 2010

Page 16: Lecture 1

MVC

Controller

Model

View = Your Controller’s minions

View

Stanford

CS193p

Fall 2010

Page 17: Lecture 1

MVC

Controller

Model View

It’s all about managing communication between camps Stanford

CS193p

Fall 2010

Page 18: Lecture 1

MVC

Controller

Model View

Controllers can always talk directly to their Model. Stanford

CS193p

Fall 2010

Page 19: Lecture 1

MVC

Controller outlet

Model View

Controllers can also talk directly to their View. Stanford

CS193p

Fall 2010

Page 20: Lecture 1

MVC

Controller outlet

Model View

The Model and View should never speak to each other. Stanford

CS193p

Fall 2010

Page 21: Lecture 1

MVC

Controller outlet

Model

?

View

Can the View speak to its Controller? Stanford

CS193p

Fall 2010

Page 22: Lecture 1

MVC

Controller outlet

Model View

Sort of. Communication is “blind” and structured. Stanford

CS193p

Fall 2010

Page 23: Lecture 1

MVC target

Controller outlet

Model View

The Controller can drop a target on itself. Stanford

CS193p

Fall 2010

Page 24: Lecture 1

MVC target

Controller outlet

action

Model View

Then hand out an action to the View. Stanford

CS193p

Fall 2010

Page 25: Lecture 1

MVC target

Controller outlet

action

Model View

The View sends the action when things happen in the UI. Stanford

CS193p

Fall 2010

Page 26: Lecture 1

MVC target

Controller outlet

action should

will did

Model View

Sometimes the View needs to synchronize with the Controller. Stanford

CS193p Fall 2010

Page 27: Lecture 1

MVC

Model

should

will did

Controller

target

outlet

action

View

The Controller sets itself as the View’s delegate. Stanford

CS193p

Fall 2010

Page 28: Lecture 1

MVC

Model

should

will did

Controller

target

outlet

action

View

The delegate is set via a protocol (i.e. it’s “blind” to class). Stanford

CS193p

Fall 2010

Page 29: Lecture 1

MVC

Model

should

will did

Controller

target

outlet

action

View

Views do not own the data they display. Stanford

CS193p

Fall 2010

Page 30: Lecture 1

MVC

Model

should

will did

Controller

target

outlet

data

action

View at count

So, if needed, they have a protocol to acquire it. Stanford

CS193p

Fall 2010

Page 31: Lecture 1

MVC should

will did

Controller data

target

outlet at

Model

count

action

View

Controllers are almost always that data source (not Model!). Stanford

CS193p

Fall 2010

Page 32: Lecture 1

MVC should

will did

Controller data

target

outlet at

Model

count

action

View

Controllers interpret/format Model information for the View. Stanford

CS193p

Fall 2010

Page 33: Lecture 1

MVC should

will did

Controller data

target

outlet

?

Model

at count

action

View

Can the Model talk directly to the Controller? Stanford

CS193p

Fall 2010

Page 34: Lecture 1

MVC should

will did

Controller data

target

outlet at

Model

count

action

View

No. The Model is (should be) UI independent. Stanford

CS193p

Fall 2010

Page 35: Lecture 1

MVC should

will did

Controller data

target

outlet at

Model

count

action

View

So what if the Model has information to update or something? Stanford

CS193p Fall 2010

Page 36: Lecture 1

MVC should

will did

Controller data

target

outlet at

Notification & KVO

Model

count

action

View

It uses a “radio station”-like broadcast mechanism. Stanford

CS193p

Fall 2010

Page 37: Lecture 1

MVC should

will did

Controller data

target

outlet at

Notification & KVO

Model

count

action

View

Controllers (or other Model) “tune in” to interesting stuff. Stanford

CS193p

Fall 2010

Page 38: Lecture 1

MVC should

will did

Controller data

target

outlet at

Notification & KVO

Model

count

action

View

A View might “tune in,” but probably not to a Model’s “station.” Stanford

CS193p

Fall 2010

Page 39: Lecture 1

MVC should

will did

Controller data

target

outlet at

Notification & KVO

Model

count

action

View

Now combine MVC groups to make complicated programs ... Stanford

CS193p

Fall 2010

Page 40: Lecture 1

MVCs working together

Stanford

CS193p

Fall 2010

Page 41: Lecture 1

MVCs not working together

Stanford

CS193p

Fall 2010

Page 42: Lecture 1

Coming Up Next Lecture Overview of the Development Environment

Xcode

Objective-C intro

Interface Builder

Concrete example of MVC

Major demonstration of all of the above: Calculator

Friday (optional) Installing the SDK and using the debugger (this is the only time that will be covered)

Next Week Objective-C language in depth

Foundation classes: arrays, dictionaries, strings, etc.

Dynamic and static typing

Memory Management Stanford

CS193p

Fall 2010