SlideShare una empresa de Scribd logo
1 de 267
Descargar para leer sin conexión
iPhone Application
   Development
     William Taysom
     2009 April 22
The iPhone.
January 9, 2007




Introduced in 2007.
30 Million Sold




30 Million Sold.
An impessive device.
• 480×320 display
             • 163ppi (50% more than your MacBook)
             • 8GB, 16GB, even 32GB of Storage



Large display, high resolution, gigabyes of
storage, ...
• Speaker
             • Mic
             • Headphone



...a speaker, mic,
headphone, ...
• Camera
             • Wireless
             • GPS



...camera, wireless,
GPS, ...
• Accelerometer
             • Ambient Light Sensor
             • Proximity Sensor



...accelerometer, light sensor, proximity
sensor, ...
• And it’s a Phone.




...and itʼs a phone.
But thatʼs not why weʼre here.
This is why weʼre here.
25,000 Apps.
1 billion downloads.
You want some.



You want some.
I will show you how.



I will show you how.
iPhone application development has four aspects:
• Your relationship with Apple,
• the iPhone developer tools,
• the iPhone Platform, and
• the Objective-C programming language.
iPhone application development has four aspects:
• Your relationship with Apple,
• the iPhone developer tools,
• the iPhone Platform, and
• the Objective-C programming language.
iPhone application development has four aspects:
• Your relationship with Apple,
• the iPhone developer tools,
• the iPhone Platform, and
• the Objective-C programming language.
iPhone application development has four aspects:
• Your relationship with Apple,
• the iPhone developer tools,
• the iPhone Platform, and
• the Objective-C programming language.
iPhone application development has four aspects:
• Your relationship with Apple,
• the iPhone developer tools,
• the iPhone Platform, and
• the Objective-C programming language.
Letʼs talk about your relationship with Apple.
• Apple makes the device.
           • Apple provides the tools.
           • Apple approves your apps.



Apple makes the device.
Apple provides the tools.
Apple approves your apps.
• You will have a relationship with Apple.




You will have a relationship with Apple.
Your relationship is mediated by three web sites:
iPhone Dev Center




...the iPhone Dev
Center, ...
iPhone Developer
                      Program Portal




...the iPhone Developer Program
Portal, ...
iTunes Connect




...and iTunes Connect.
This chart summarizes the iPhone development process from signing up with the Dev Center
• to seeing your app on the AppStore.
This chart summarizes the iPhone development process from signing up with the Dev Center
• to seeing your app on the AppStore.
Your journey begins...
Your journey begins...
...at the iPhone Dev
Center.
iPhone Dev Center




Letʼs check it
out.
This is where you download the SDK, ...
This is where you download the SDK, ...
...and is one place where you can read
documention.
With the SDK, you are ready to develop your app.
In the mean time, ...
...you should sign up for the iPhone Developer
Program.
From the iPhone Dev Cenver,
• you learn more about the Developer Program.
From the iPhone Dev Cenver,
• you learn more about the Developer Program.
“iPhone Developer Program: The fastest path from code to customer.”
The Program isnʼt just the fastest path: itʼs the only path.
To put your App on a device or on the store, you need to join the program.
After signing up, you need to be approved.
With the Standard program, you sign up as an individual or as a corporation.
We signed up as a corporation. We needed to fax Apple a copy of our Articles of Incorporation.
Then they called us for confirmation.
Then we needed to call them again after they sent us the wrong form email.
• In total, the process took us about a month.
After signing up, you need to be approved.
With the Standard program, you sign up as an individual or as a corporation.
We signed up as a corporation. We needed to fax Apple a copy of our Articles of Incorporation.
Then they called us for confirmation.
Then we needed to call them again after they sent us the wrong form email.
• In total, the process took us about a month.
Once approved,
• you visit the Program Portal.
Once approved,
• you visit the Program Portal.
iPhone Developer
                        Program Portal




The portal provides you with provisioning profiles.
A provisioning profile allows you to sign apps.
A signature gives you permission to test an app on a device or to prepare an app for distribution.
iPhone Development
               Certificate


                         App ID



              Unique Device ID



You need to collect three things in order to generate a provisioning
profile:
iPhone Development
                                                                  who
               Certificate


                        App ID



             Unique Device ID



An iPhone Development Certificate tells who will use the profile.
iPhone Development
                                                     who
               Certificate


                        App ID                       what



             Unique Device ID



An app ID identifies what app the person is working
on.
iPhone Development
                                                                      who
               Certificate


                        App ID                                       what



             Unique Device ID                                       where



A unique device ID determines where the app will be used, which device or the
store.
It's a bit like the game Cleudo: who done it, where, and with what
weapon.
While youʼre preparing your
app, ...
While youʼre preparing your
app, ...
...you should visit iTunes Connect. iTunes Connect is...
iTunes Connect




...your backdoor enterance into the iTunes
Store.
From iTunes Connect,
• you fill out a paid applications contact so that you can sell your app on the store.
You need to provide Apple with your bank and tax info.
They need to verify it. The turnaround can be a few days or weeks.
From iTunes Connect,
• you fill out a paid applications contact so that you can sell your app on the store.
You need to provide Apple with your bank and tax info.
They need to verify it. The turnaround can be a few days or weeks.
While youʼre waiting for your contract, you can upload your app and its accompanying
artwork.
At this point, you are waiting for your contract and for app approval.
Though people have been stuck waiting,
my first app was approved within 24 hours.
Since then, Iʼve always received feedback within a few days.
Okay,
• back to the top.
Okay,
• back to the top.
Start by signing up with iPhone Dev Center.
Download the SDK. Work on your app.
Start by signing up with iPhone Dev Center.
Download the SDK. Work on your app.
Sign up for the iPhone Developer
program.
Sign up for the iPhone Developer
program.
Go through the approval
process.
Go through the approval
process.
Gather info for the program portal.
• Fill out the paid applications contract from iTunes Connect.
Submit your app.
• Wait for approval.
Gather info for the program portal.
• Fill out the paid applications contract from iTunes Connect.
Submit your app.
• Wait for approval.
Gather info for the program portal.
• Fill out the paid applications contract from iTunes Connect.
Submit your app.
• Wait for approval.
Gather info for the program portal.
• Fill out the paid applications contract from iTunes Connect.
Submit your app.
• Wait for approval.
Enjoy the fruits of your
labor.
That is your relationship with Apple.
Letʼs talk about tools.
The iPhone SDK includes everything you need for iPhone (and Mac) development.
We will use four tools:
• Xcode
• The iPhone Simulator
• Interface Builder
• Instruments
We will use four tools:
• Xcode
• The iPhone Simulator
• Interface Builder
• Instruments
We will use four tools:
• Xcode
• The iPhone Simulator
• Interface Builder
• Instruments
We will use four tools:
• Xcode
• The iPhone Simulator
• Interface Builder
• Instruments
We will use four tools:
• Xcode
• The iPhone Simulator
• Interface Builder
• Instruments
Xcode is Apple's integrated development environment. We will spend most of our time in
it.
Xcode is a front end for command-line utilities:
• compiling with gcc,
• linking with ld,
• debugging with gdb, and
• version control (also called source code management): svn, cvs, or Perforce.
• compling ↣ gcc




Xcode is a front end for command-line utilities:
• compiling with gcc,
• linking with ld,
• debugging with gdb, and
• version control (also called source code management): svn, cvs, or Perforce.
• compling ↣ gcc
            • linking ↣ ld




Xcode is a front end for command-line utilities:
• compiling with gcc,
• linking with ld,
• debugging with gdb, and
• version control (also called source code management): svn, cvs, or Perforce.
• compling ↣ gcc
            • linking ↣ ld
            • debugging ↣ gdb



Xcode is a front end for command-line utilities:
• compiling with gcc,
• linking with ld,
• debugging with gdb, and
• version control (also called source code management): svn, cvs, or Perforce.
• compling ↣ gcc
            • linking ↣ ld
            • debugging ↣ gdb
            • SCM ↣ svn, cvs, Perforce


Xcode is a front end for command-line utilities:
• compiling with gcc,
• linking with ld,
• debugging with gdb, and
• version control (also called source code management): svn, cvs, or Perforce.
Window Types



Xcode has many types of windows:
Editor




...the
editor, ...
Documentation




...documentation, ..
.
Build




...build, ..
.
Console




...debugging
console, ...
Debugger




...debugger, ..
.
Project




...the project window (Xcodeʼs main
window), ...
Info




...info
windows, ...
Organizer




...an organizer for your
iPhone, ...
SCM




...and source code
managment.
We will see all of these windows before weʼre done with Xcode.
The iPhone Simulator is great for everyday testing and
debugging.
Looks just like the real thing in
portrait...
...and in landscape.
Thatʼs the gist of the
simulator.
Interface Builder helps you layout the views for your
app.
These are your primary IB
windows.
Main Window




The main window shows all of the objects in your interface builder
document.
View Window




The view window is where you layout the subviews of a view.
Attribute Inspector




The inspector allows you to edit properties of your objects.
Here we see the visual attributes of a slider.
Connections Inspector




And here we see connections between the slider and other
objects.
Interface Builder can remove the guesswork of in-code layout.
But be warned. IB can trip you up due to limitations and bugs.
Instruments is used for profiling
and, ...
...most importantly, itʼs used in checking for memory
leaks.
We will have some good runs with Instruments over the next few
days.
These are tools which weʼll be using.
However, the SDK offers many more.
We have graphics tools, ...
...performance
tools, ...
...utilities, ..
.
...and Dashcode.
Before native iPhone apps were an option, Dashcode was created to make iPhone specific Web Applications.
Hereʼs Dashcode.
If it turns out that native development wonʼt work well for you
or if you have stronger experience with web development, ...
...I recommend that you look into
Dashcode.
Xcode, iPhone Simulator, Interface Builder,
Instruments...
...these are the tools that weʼll be
using.
Turn your attention to the iPhone
platform.
The iPhone OS provides several layers of services.
Services on higher layers abstract away details from services on lower layers.
Services on lower layers provide more flexibility as well as more inconvenience and tedium.
Letʼs start at the bottom.
Just like Mac OS X, the iPhone is built on the Mach UNIX kernel.
Core OS exposes common UNIX libraries.
Core OS




POSIX threads for in shared state multithreaded concurrency.
• BSD sockets for low level TCP and UDP networking.
• Standard C libraries including stdio, stdlib, and the rest.
Core OS


            • POSIX Threads ↣ Concurrency




POSIX threads for in shared state multithreaded concurrency.
• BSD sockets for low level TCP and UDP networking.
• Standard C libraries including stdio, stdlib, and the rest.
Core OS


            • POSIX Threads ↣ Concurrency
            • BSD Sockets ↣ TCP & UDP Networking



POSIX threads for in shared state multithreaded concurrency.
• BSD sockets for low level TCP and UDP networking.
• Standard C libraries including stdio, stdlib, and the rest.
Core OS


            • POSIX Threads ↣ Concurrency
            • BSD Sockets ↣ TCP & UDP Networking
            • <stdio.h> <stdlib.h> ...the rest


POSIX threads for in shared state multithreaded concurrency.
• BSD sockets for low level TCP and UDP networking.
• Standard C libraries including stdio, stdlib, and the rest.
Core services include OS X specific libraries as well as popular, relatively new C libraries.
Core services include OS X specific libraries as well as popular, relatively new C libraries.
Core Services




Core foundation is the plain C library which mirrors Objective-C Foundation classes.
• Core Location enables your iPhone to determine where it is.
• SQLite is for lightweight SQL databases.
• libxml2 is for heavy duty XML processing.
Core Services

            • Core Foundation ↣ Foundation Mirror




Core foundation is the plain C library which mirrors Objective-C Foundation classes.
• Core Location enables your iPhone to determine where it is.
• SQLite is for lightweight SQL databases.
• libxml2 is for heavy duty XML processing.
Core Services

            • Core Foundation ↣ Foundation Mirror
            • Core Location ↣ GPS




Core foundation is the plain C library which mirrors Objective-C Foundation classes.
• Core Location enables your iPhone to determine where it is.
• SQLite is for lightweight SQL databases.
• libxml2 is for heavy duty XML processing.
Core Services

            • Core Foundation ↣ Foundation Mirror
            • Core Location ↣ GPS
            • SQLite ↣ SQL Database



Core foundation is the plain C library which mirrors Objective-C Foundation classes.
• Core Location enables your iPhone to determine where it is.
• SQLite is for lightweight SQL databases.
• libxml2 is for heavy duty XML processing.
Core Services

            • Core Foundation ↣ Foundation Mirror
            • Core Location ↣ GPS
            • SQLite ↣ SQL Database
            • libxml2 ↣ XML Processing


Core foundation is the plain C library which mirrors Objective-C Foundation classes.
• Core Location enables your iPhone to determine where it is.
• SQLite is for lightweight SQL databases.
• libxml2 is for heavy duty XML processing.
The media layer supports 2D and 3D graphics, audio, and
video.
The media layer supports 2D and 3D graphics, audio, and
video.
Media




For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
Media

            • Core Audio & OpenAL ↣ Audio




For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
Media

            • Core Audio & OpenAL ↣ Audio
            • OpenGL ES ↣ 3D Graphics




For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
Media

            • Core Audio & OpenAL ↣ Audio
            • OpenGL ES ↣ 3D Graphics
            • Quartz (Core Graphics) ↣ 2D Graphics



For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
Media

            • Core Audio & OpenAL ↣ Audio
            • OpenGL ES ↣ 3D Graphics
            • Quartz (Core Graphics) ↣ 2D Graphics
            • Core Animation ↣ Animated Effects


For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
For audio, we have Core Audio and OpenAL.
• OpenGL ES is geared toward 3D graphics.
• Quartz, also called Core Graphics, provides 2D graphics support.
• Core Animation provides all those animated effects we see on the iPhone and the Mac
• including this presentation. •
Cocoa Touch contains the Objective-C frameworks you use to build your application.
Cocoa Touch contains the Objective-C frameworks you use to build your application.
Foundation




Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
Foundation
                • NSObject




Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
Foundation
                • NSObject
                • NSString, NSNumber, NSNull




Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
Foundation
                • NSObject
                • NSString, NSNumber, NSNull
                • NSArray, NSDictionary, NSSet



Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
Foundation
                • NSObject
                • NSString, NSNumber, NSNull
                • NSArray, NSDictionary, NSSet
                • NSFileManager, NSFileHandle


Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
Foundation
                • NSObject
                • NSString, NSNumber, NSNull
                • NSArray, NSDictionary, NSSet
                • NSFileManager, NSFileHandle
                • NSURL, NSURLRequest, NSURLResponse
Foundation is the essential Objective-C framework. Foundation contains:
• NSObject, the root of the Objective-C class hierarchy,
• Data type wrappers,
• Collections,
• Local filesystem access,
• HTTP requests, and much more.
CocoaAsyncSocket




For TCP and UDP networking, nothing beats CocoaAsyncSocket.
Though not part of the iPhone SDK, CocoaAsyncSocket is such an valuable networking library
that I can't help but mention it.
UIKit




UIKit contains all the standard views and controllers which make up your application.
• From the time the user taps the application icon to the moment when application execution terminates, UIKit
is in charge.
UIKit




UIKit contains all the standard views and controllers which make up your application.
• From the time the user taps the application icon to the moment when application execution terminates, UIKit
is in charge.
UIKit handles the main event loop and calls you when it expects a response.
How does it work?
How does the touch screen interface relate to the source code
implementation?
Consider the clock application.
What parts make up the
clock?
UIKit uses windows and views to fill the screen.
The OS has a window with the status bar on the top.
The application window fills the rest of the screen below it.
The window contains the main view for the application.
The view has a tab bar at the bottom
and another view for the World Clock.
The World clock has a navigation bar on top.
A table view fills the rest.
This table has one cell.
The cell contains four labels and a special clock face.
This is how the Clock application is divided into views.
Each view is a UIView subclass.
Here, the views are relabed with class names.
The status bar is associated with the UIApplication class.
The window is a UIWindow.
The tab bar is a UITabBar, etc.
The cell is a UITableViewCell.
The labels are UILabels,
and the clock face is some custom UIView.
A viewʼs responsibility is to represent some piece of information or to layout some subviews.
UIKit uses controller classes to update and to keep track of views.
A UIApplicationDelegate
creates the main window,
creates the main view controller,
and places the controllerʼs view in the window.
All this happens in the applicationDidFinishLaunching: method of the UIApplicationDelegate.
UIKit has specific controllers for managing certain kinds of
views.
A UITabBarController mangages a tab bar.
It responds to touches on the bar by displaying the corresponding tab.
Each tab has a controller.
This diagram shows a UITabBarController with several view controllers.
The title of a controller provides the label for its tab bar button.
The controllerʼs tab bar item tells the tab bar controller which image to show on the tab bar button.
The selected controllerʼs view fills the space above the tab bar.
In our case, the view is associated with the controller for the World
Clock.
Since the World Clock has a navigation bar on top, its controller is a UINavigationController.
A navigation controller manages a stack of controllers whose views are pushed in from the right.
In the clock, the stack only contains one controller.
So letʼs look at the address book for a minute.
When you touch a Johnʼs name, ...
...his info slides right in.
The upper left corner provides a back button.
We have three controllers on the UINavigationContoller
stack.
At the top of the stack, in the bottom right corner of the diagram, we see Johnʼs info.
His info is pushed on top up of the All Contacts controller,
which, in turn, is pushed on top of the Groups controller.
The title of the top controller is used as the title of the navigation bar.
The view fills the space under the navigation bar.
The navigation item populates the navigation bar with other information
including custom bar buttons.
The title of the top controller is used as the title of the navigation bar.
The view fills the space under the navigation bar.
The navigation item populates the navigation bar with other information
including custom bar buttons.
Letʼs return to the Clock.
Notice that the UINavigationController is contained in the UITabBarController.
Whenever you have a tab bar controller and a navigation controller,
the tab bar should be on the outside and the navigation controller should be on the inside.
Iʼve tried it the other way. It just doesnʼt work: the controllers get very confused.
What controller manages the UITableView?
Why itʼs a UITableViewController.
The UITableViewController serves as the data source for the table view.
It tells the table how many rows there are and what cell to put in each visible row.
How does the table view controller know what to put in the table?
How does it remember the list of clocks?
The controller asks the model.
I canʼt be sure how Apple wrote the Clock app, but we can imagine what the model is like.
Since the clock only needs to keep track of a little data,
they shouldnʼt bother with SQLite databases or external property list files.
Instead, they probably store all the data in the user defaults database.
What data specifically?
Again, I canʼt be sure, but I guess they use a time zone
object.
They need to keep an array of time zones: one for each clock.
Since you can add and remove clocks, the array might be mutable.
For each tab in the app, they need to keep some data.
So I suppose they use an array for that.
Finally, they could use an index to remember which of the tabs is
selected.
Step back.
• We have our model,
• our view,
• and our controller.
• Combine them...
Model




Step back.
• We have our model,
• our view,
• and our controller.
• Combine them...
View       Model




Step back.
• We have our model,
• our view,
• and our controller.
• Combine them...
View       Controller   Model




Step back.
• We have our model,
• our view,
• and our controller.
• Combine them...
Step back.
• We have our model,
• our view,
• and our controller.
• Combine them...
...to get our
app.
Weʼll be making three apps over the next few
days.
Before starting, letʼs finish our overview.
The Cocoa Touch layer contains the primary APIs youʼll use in making apps.
Turn to other layers as needed.
Truly, ...
...the iPhone is an impressive
platform.
Objective-C is the language you use to speak to the
platform.
History



History time.
1981: Brad Cox




Objective-C was developed by Brad Cox in the early eighties.
1988: NeXT




In 1988 NeXT Inc. licensed Objective-
C...
NeXTstep




...for their NeXTstep operating
system.
1996: Jobs Returns




In 1996 Steve Jobs and NeXT joined Apple.
NeXTstep




NeXTstep became...
Mac OS X




...Mac OS X.
Letʼs see that again.
NeXTstep




NeXTstep became...
Mac OS X




...Mac OS X.
One more time.
NeXTstep became...
...Mac OS
X.
Objective-C




Objective-C came along for the ride.
Since iPhone OS is a version of Mac OS X, the iPhone's programming language is Objective-C.
Design



What is Objective-C like?
Objective-C brings some Object-Oriented features from Smalltalk into
C.
Runtime




Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net.
• Objects are pointers to C structures.
• Methods are C functions.
• Classes are constructed at runtime.
Runtime

             • Object ↣ struct objc_object *




Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net.
• Objects are pointers to C structures.
• Methods are C functions.
• Classes are constructed at runtime.
Runtime

             • Object ↣ struct objc_object *
             • Method ↣ C Function



Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net.
• Objects are pointers to C structures.
• Methods are C functions.
• Classes are constructed at runtime.
Runtime

             • Object ↣ struct objc_object *
             • Method ↣ C Function
             • Class ↣ Runtime Constructed


Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net.
• Objects are pointers to C structures.
• Methods are C functions.
• Classes are constructed at runtime.
Syntax



Objective-C's syntax is the same as C syntax with a few
additions.
Directives




Directives are prefixed by the at-sign.
• These are the ones I type most often.
• These, though common, are usually typed by Xcode when you make a new class.
• Exceptions arenʼt often caught in Objective-C. They usually represent program errors.
• I rarely use any of the directives in this last group.
Directives
             • @"string literal" @property @synthesize
                  @selector()




Directives are prefixed by the at-sign.
• These are the ones I type most often.
• These, though common, are usually typed by Xcode when you make a new class.
• Exceptions arenʼt often caught in Objective-C. They usually represent program errors.
• I rarely use any of the directives in this last group.
Directives
             • @"string literal" @property @synthesize
                  @selector()
             • @interface @implementation @protocol
                  @class @end




Directives are prefixed by the at-sign.
• These are the ones I type most often.
• These, though common, are usually typed by Xcode when you make a new class.
• Exceptions arenʼt often caught in Objective-C. They usually represent program errors.
• I rarely use any of the directives in this last group.
Directives
             • @"string literal" @property @synthesize
                  @selector()
             • @interface @implementation @protocol
                  @class @end
             • @dynamic @try @throw @catch() @finally


Directives are prefixed by the at-sign.
• These are the ones I type most often.
• These, though common, are usually typed by Xcode when you make a new class.
• Exceptions arenʼt often caught in Objective-C. They usually represent program errors.
• I rarely use any of the directives in this last group.
Directives
             • @"string literal" @property @synthesize
                  @selector()
             • @interface @implementation @protocol
                  @class @end
             • @dynamic @try @throw @catch() @finally
             • @protocol() @private @projected @public
                  @synchronized() @encode()


Directives are prefixed by the at-sign.
• These are the ones I type most often.
• These, though common, are usually typed by Xcode when you make a new class.
• Exceptions arenʼt often caught in Objective-C. They usually represent program errors.
• I rarely use any of the directives in this last group.
Messages




Method calls, also known as messages, use square brackets.
• Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”.
• Arguments come after a colon.
• For multiple arguments, the method name is broken into parts: one for each argument.
The selector here is “stringByReplacingOccurrencesOfString:withString:”.
In Objective-C, they like descriptive method names.
• A method can take a variable number of comma-seperated arguments after its last colon.
Messages

             • [string integerValue]




Method calls, also known as messages, use square brackets.
• Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”.
• Arguments come after a colon.
• For multiple arguments, the method name is broken into parts: one for each argument.
The selector here is “stringByReplacingOccurrencesOfString:withString:”.
In Objective-C, they like descriptive method names.
• A method can take a variable number of comma-seperated arguments after its last colon.
Messages

             • [string integerValue]
             • [string isEqualToString:anotherString]




Method calls, also known as messages, use square brackets.
• Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”.
• Arguments come after a colon.
• For multiple arguments, the method name is broken into parts: one for each argument.
The selector here is “stringByReplacingOccurrencesOfString:withString:”.
In Objective-C, they like descriptive method names.
• A method can take a variable number of comma-seperated arguments after its last colon.
Messages

             • [string integerValue]
             • [string isEqualToString:anotherString]
             •    [string stringByReplacingOccurrencesOfString:oneString
                  
      withString:anotherString]




Method calls, also known as messages, use square brackets.
• Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”.
• Arguments come after a colon.
• For multiple arguments, the method name is broken into parts: one for each argument.
The selector here is “stringByReplacingOccurrencesOfString:withString:”.
In Objective-C, they like descriptive method names.
• A method can take a variable number of comma-seperated arguments after its last colon.
Messages

             • [string integerValue]
             • [string isEqualToString:anotherString]
             •    [string stringByReplacingOccurrencesOfString:oneString
                  
      withString:anotherString]

             •    [NSString stringWithFormat:@"%d %@", number, string]




Method calls, also known as messages, use square brackets.
• Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”.
• Arguments come after a colon.
• For multiple arguments, the method name is broken into parts: one for each argument.
The selector here is “stringByReplacingOccurrencesOfString:withString:”.
In Objective-C, they like descriptive method names.
• A method can take a variable number of comma-seperated arguments after its last colon.
Method Declarations




Method declarations are similar to message sends.
• A minus-sign indicates an instance method.
A plus sign would indicate a class method. The return type is placed in parenthesis.
• The type of a parameter is wrapped in parenthesis after the colon and before the parameter name.
• As with messges, the selector is split when there are multiple parameters.
• Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a
variable number of arguments.
Method Declarations

            • - (NSInteger)integerValue;




Method declarations are similar to message sends.
• A minus-sign indicates an instance method.
A plus sign would indicate a class method. The return type is placed in parenthesis.
• The type of a parameter is wrapped in parenthesis after the colon and before the parameter name.
• As with messges, the selector is split when there are multiple parameters.
• Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a
variable number of arguments.
Method Declarations

            • - (NSInteger)integerValue;
            • - (BOOL)isEqualToString:(NSString *)aString;




Method declarations are similar to message sends.
• A minus-sign indicates an instance method.
A plus sign would indicate a class method. The return type is placed in parenthesis.
• The type of a parameter is wrapped in parenthesis after the colon and before the parameter name.
• As with messges, the selector is split when there are multiple parameters.
• Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a
variable number of arguments.
Method Declarations

            • - (NSInteger)integerValue;
            • - (BOOL)isEqualToString:(NSString *)aString;
            •    - (NSString *)stringByReplacingOccurrencesOfString:
                 (NSString *)target withString:(NSString *)replacement;




Method declarations are similar to message sends.
• A minus-sign indicates an instance method.
A plus sign would indicate a class method. The return type is placed in parenthesis.
• The type of a parameter is wrapped in parenthesis after the colon and before the parameter name.
• As with messges, the selector is split when there are multiple parameters.
• Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a
variable number of arguments.
Method Declarations

            • - (NSInteger)integerValue;
            • - (BOOL)isEqualToString:(NSString *)aString;
            •    - (NSString *)stringByReplacingOccurrencesOfString:
                 (NSString *)target withString:(NSString *)replacement;

            •    + (id)stringWithFormat:(NSString *)format, ...;




Method declarations are similar to message sends.
• A minus-sign indicates an instance method.
A plus sign would indicate a class method. The return type is placed in parenthesis.
• The type of a parameter is wrapped in parenthesis after the colon and before the parameter name.
• As with messges, the selector is split when there are multiple parameters.
• Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a
variable number of arguments.
Dot Syntax


             • [label text]
             • [label setText:string]



Historically, this is how you would get and set a propery in Objective-C.
• But that isnʼt the way itʼs usually done on the iPhone.
Dot Syntax




Historically, this is how you would get and set a propery in Objective-C.
• But that isnʼt the way itʼs usually done on the iPhone.
Dot Syntax




Instead you use a dot for getters and setters. The meaning is the same.
The compiled code is the same. Only the notation differs.
Dot Syntax


            • label.text
            • label.text = string



Instead you use a dot for getters and setters. The meaning is the same.
The compiled code is the same. Only the notation differs.
Fast Enumeration

               for (NSString *name in names) {
               
 ...
               }




Last but not least, Objective-C has a special for loop to iterate across
collections.
Thatʼs Objective-C in a too-small nutshell.
Your printed materials include a concise reference to Objective-C.
The materials also include a reference to C and the C Preprocessor.
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
To summarize:
• Your relationship to Apple defines the process of iPhone development.
• The SDK provides you with the tools.
• The iPhone platform provides you with capabilities.
• Objective-C provides you with the language.
• These four aspects cover everything you need in order to develop on the iPhone and get those...
...downloads.
The rest of the course is a tutorial in which weʼll build three
apps.
Temp




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder

                                                    •   Views & Controls




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder

                                                    •   Views & Controls

                                                    •   Text Fields




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder

                                                    •   Views & Controls

                                                    •   Text Fields

                                                    •   Alerts




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder

                                                    •   Views & Controls

                                                    •   Text Fields

                                                    •   Alerts

                                                    •   Autorotation




We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
Temp
                                                    •   Interface Builder

                                                    •   Views & Controls

                                                    •   Text Fields

                                                    •   Alerts

                                                    •   Autorotation

                                                    •   Localization



We start with a temperature converter.
• Weʼll learn all about Interface Builder,
• views and controls,
• how to use text fields,
• alert windows,
• landscape autorotation,
• and weʼll localize the app.
The Elements




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views

                                                                     •    Plists




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views

                                                                     •    Plists

                                                                     •    View Controllers




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views

                                                                     •    Plists

                                                                     •    View Controllers

                                                                     •    Table View Cells




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views

                                                                     •    Plists

                                                                     •    View Controllers

                                                                     •    Table View Cells

                                                                     •    Web Views




Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
The Elements
                                                                     •    Table Views

                                                                     •    Plists

                                                                     •    View Controllers

                                                                     •    Table View Cells

                                                                     •    Web Views

                                                                     •    Animation



Our big example is a viewer for the atomic elements sorted in different ways.
• Weʼll learn all about table views,
• plists,
• view controllers,
• table view cells,
• web views,
• animation, and a whole lot more.
GLGravity




As a final treat, weʼll play with
• OpenGL ES
• and the iPhoneʼs accelerometer.
GLGravity


                                           •   OpenGL ES




As a final treat, weʼll play with
• OpenGL ES
• and the iPhoneʼs accelerometer.
GLGravity


                                           •   OpenGL ES

                                           •   Accelerometer




As a final treat, weʼll play with
• OpenGL ES
• and the iPhoneʼs accelerometer.
These are our three
examples.
Let’s get started.



Letʼs get
started.

Más contenido relacionado

La actualidad más candente

打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP彼得潘 Pan
 
iPhone - Human Interface Guidelines
iPhone - Human Interface GuidelinesiPhone - Human Interface Guidelines
iPhone - Human Interface GuidelinesMartin Ebner
 
iPhone Developer_ankush
iPhone Developer_ankushiPhone Developer_ankush
iPhone Developer_ankushankush Ankush
 
Mobile Application testing- All you want to know to get started!!
Mobile Application testing- All you want to know to get started!!Mobile Application testing- All you want to know to get started!!
Mobile Application testing- All you want to know to get started!!Neha Thakur
 
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...Why the iPad UI matters, And how it differs from the Tablet PC, but also from...
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...Fabien Marry
 
What Apple's iOS 5 Means for Marketers
What Apple's iOS 5 Means for MarketersWhat Apple's iOS 5 Means for Marketers
What Apple's iOS 5 Means for MarketersBen Gaddis
 
iPhone first App Store submission
iPhone  first App Store submissioniPhone  first App Store submission
iPhone first App Store submissionPragati Singh
 
Adobe Max Modern iPhone App Design with Rick Messer
Adobe Max Modern iPhone App Design with Rick MesserAdobe Max Modern iPhone App Design with Rick Messer
Adobe Max Modern iPhone App Design with Rick MesserRick Messer
 
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
 
iOS Ecosystem @ Fiera del Radioamatore Pordenone
iOS Ecosystem @ Fiera del Radioamatore PordenoneiOS Ecosystem @ Fiera del Radioamatore Pordenone
iOS Ecosystem @ Fiera del Radioamatore PordenoneKlaus Lanzarini
 
iPhone Development Quick Start
iPhone Development Quick StartiPhone Development Quick Start
iPhone Development Quick Startgnocode
 
Introducing Apple New iPad(iPad 4th generation)
Introducing Apple New iPad(iPad 4th generation)Introducing Apple New iPad(iPad 4th generation)
Introducing Apple New iPad(iPad 4th generation)JJ Wu
 
What's new in iOS 9 ?
What's new in iOS 9 ?What's new in iOS 9 ?
What's new in iOS 9 ?Phonevalley
 
iPhone transfer software
iPhone transfer softwareiPhone transfer software
iPhone transfer softwarejohnjuly123
 
iOS 9 - New Features at a Glance
iOS 9 - New Features at a GlanceiOS 9 - New Features at a Glance
iOS 9 - New Features at a Glancetechugo
 
Iphone client-server app with Rails backend (v3)
Iphone client-server app with Rails backend (v3)Iphone client-server app with Rails backend (v3)
Iphone client-server app with Rails backend (v3)Sujee Maniyam
 
iPhone OS in Indonesia
iPhone OS in IndonesiaiPhone OS in Indonesia
iPhone OS in Indonesiahanusz
 

La actualidad más candente (20)

打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP
 
iPhone - Human Interface Guidelines
iPhone - Human Interface GuidelinesiPhone - Human Interface Guidelines
iPhone - Human Interface Guidelines
 
iPhone Developer_ankush
iPhone Developer_ankushiPhone Developer_ankush
iPhone Developer_ankush
 
Mobile Application testing- All you want to know to get started!!
Mobile Application testing- All you want to know to get started!!Mobile Application testing- All you want to know to get started!!
Mobile Application testing- All you want to know to get started!!
 
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...Why the iPad UI matters, And how it differs from the Tablet PC, but also from...
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...
 
What Apple's iOS 5 Means for Marketers
What Apple's iOS 5 Means for MarketersWhat Apple's iOS 5 Means for Marketers
What Apple's iOS 5 Means for Marketers
 
iPhone first App Store submission
iPhone  first App Store submissioniPhone  first App Store submission
iPhone first App Store submission
 
Adobe Max Modern iPhone App Design with Rick Messer
Adobe Max Modern iPhone App Design with Rick MesserAdobe Max Modern iPhone App Design with Rick Messer
Adobe Max Modern iPhone App Design with Rick Messer
 
iPhone Applications & Luxury Brands - Updated May 5, 2010
iPhone Applications & Luxury Brands - Updated May 5, 2010iPhone Applications & Luxury Brands - Updated May 5, 2010
iPhone Applications & Luxury Brands - Updated May 5, 2010
 
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)
 
iOS Ecosystem @ Fiera del Radioamatore Pordenone
iOS Ecosystem @ Fiera del Radioamatore PordenoneiOS Ecosystem @ Fiera del Radioamatore Pordenone
iOS Ecosystem @ Fiera del Radioamatore Pordenone
 
iPhone Development Quick Start
iPhone Development Quick StartiPhone Development Quick Start
iPhone Development Quick Start
 
Introducing Apple New iPad(iPad 4th generation)
Introducing Apple New iPad(iPad 4th generation)Introducing Apple New iPad(iPad 4th generation)
Introducing Apple New iPad(iPad 4th generation)
 
What's new in iOS 9 ?
What's new in iOS 9 ?What's new in iOS 9 ?
What's new in iOS 9 ?
 
iPhone transfer software
iPhone transfer softwareiPhone transfer software
iPhone transfer software
 
iOS 9 : What's New ?
iOS 9 : What's New ?iOS 9 : What's New ?
iOS 9 : What's New ?
 
iOS 9 - New Features at a Glance
iOS 9 - New Features at a GlanceiOS 9 - New Features at a Glance
iOS 9 - New Features at a Glance
 
Iphone client-server app with Rails backend (v3)
Iphone client-server app with Rails backend (v3)Iphone client-server app with Rails backend (v3)
Iphone client-server app with Rails backend (v3)
 
iPhone OS in Indonesia
iPhone OS in IndonesiaiPhone OS in Indonesia
iPhone OS in Indonesia
 
Ios - Introduction to swift programming
Ios - Introduction to swift programmingIos - Introduction to swift programming
Ios - Introduction to swift programming
 

Destacado

iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development OverviewTom Adams
 
iPhone and iPad Security
iPhone and iPad SecurityiPhone and iPad Security
iPhone and iPad SecuritySimon Guest
 
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计iPhone/iPad开发讲座 第二讲 iPhone用户界面设计
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计Hao Peiqiang
 
Evolution of iPhone (ppt)
Evolution of iPhone (ppt)Evolution of iPhone (ppt)
Evolution of iPhone (ppt)honeyragay
 
Evolution of the iPhone
Evolution of the iPhoneEvolution of the iPhone
Evolution of the iPhoneMifunetune
 
HTML5 로 iPhone App 만들기
HTML5 로 iPhone App 만들기HTML5 로 iPhone App 만들기
HTML5 로 iPhone App 만들기JungHyuk Kwon
 
CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreRuss Weakley
 
Apple iPhone and iPad at IBM
Apple iPhone and iPad at IBMApple iPhone and iPad at IBM
Apple iPhone and iPad at IBMChris Sparshott
 
speed detection camera
speed detection cameraspeed detection camera
speed detection cameraAkhil Kc
 
Apple Inc Presentatioin
Apple Inc PresentatioinApple Inc Presentatioin
Apple Inc Presentatioin2AM
 
Marketing Mix of Apple iPhone
Marketing Mix of Apple iPhoneMarketing Mix of Apple iPhone
Marketing Mix of Apple iPhonePratik Shah
 
Online Geschäftsmodelle
Online GeschäftsmodelleOnline Geschäftsmodelle
Online GeschäftsmodelleMarcus Kuhn
 

Destacado (18)

The iPhone Evolution
The iPhone EvolutionThe iPhone Evolution
The iPhone Evolution
 
iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development Overview
 
iPhone and iPad Security
iPhone and iPad SecurityiPhone and iPad Security
iPhone and iPad Security
 
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计iPhone/iPad开发讲座 第二讲 iPhone用户界面设计
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计
 
Evolution of iPhone (ppt)
Evolution of iPhone (ppt)Evolution of iPhone (ppt)
Evolution of iPhone (ppt)
 
Evolution of the iPhone
Evolution of the iPhoneEvolution of the iPhone
Evolution of the iPhone
 
HTML5 로 iPhone App 만들기
HTML5 로 iPhone App 만들기HTML5 로 iPhone App 만들기
HTML5 로 iPhone App 만들기
 
CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and more
 
Apple iPhone and iPad at IBM
Apple iPhone and iPad at IBMApple iPhone and iPad at IBM
Apple iPhone and iPad at IBM
 
speed detection camera
speed detection cameraspeed detection camera
speed detection camera
 
Tablet PC
Tablet PCTablet PC
Tablet PC
 
Tablet pc
Tablet pcTablet pc
Tablet pc
 
PRESENTATION ON MIRROR LINK
PRESENTATION ON MIRROR LINKPRESENTATION ON MIRROR LINK
PRESENTATION ON MIRROR LINK
 
Speed cameras ppt full ...
Speed cameras ppt full ...Speed cameras ppt full ...
Speed cameras ppt full ...
 
Apple Inc Presentatioin
Apple Inc PresentatioinApple Inc Presentatioin
Apple Inc Presentatioin
 
Marketing Mix of Apple iPhone
Marketing Mix of Apple iPhoneMarketing Mix of Apple iPhone
Marketing Mix of Apple iPhone
 
Steve Jobs Timeline
Steve Jobs TimelineSteve Jobs Timeline
Steve Jobs Timeline
 
Online Geschäftsmodelle
Online GeschäftsmodelleOnline Geschäftsmodelle
Online Geschäftsmodelle
 

Similar a iPhone App Dev Tools

Let us learn to put i phone apps in apple’s app store
Let us learn to put i phone apps in apple’s app storeLet us learn to put i phone apps in apple’s app store
Let us learn to put i phone apps in apple’s app storeRapidsoft Technologies
 
Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhonePiTechnologies
 
How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?Flutter Agency
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App StoreGeoffrey Goetz
 
App stores + cordova... get excited!
App stores + cordova... get excited!App stores + cordova... get excited!
App stores + cordova... get excited!Drake Emko
 
Mobile Apps 101 - Mobile Industry Trends and Development Best Practices
Mobile Apps 101 - Mobile Industry Trends and Development Best PracticesMobile Apps 101 - Mobile Industry Trends and Development Best Practices
Mobile Apps 101 - Mobile Industry Trends and Development Best PracticesSignal
 
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram Thys
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram ThysOpenbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram Thys
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram ThysOpenbar
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifactsPragya Rastogi
 
8 Steps to Creating a Mobile App
8 Steps to Creating a Mobile App 8 Steps to Creating a Mobile App
8 Steps to Creating a Mobile App Cheryl Lawson
 
Flutter Android / iOS Build Preparation
Flutter Android / iOS Build PreparationFlutter Android / iOS Build Preparation
Flutter Android / iOS Build Preparation9 series
 
Ideas to App Store (2010)
Ideas to App Store (2010)Ideas to App Store (2010)
Ideas to App Store (2010)Joseph DeSetto
 
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...jcitnmkt
 
On Mobile - Website Strategy - Luxury Products
On Mobile - Website Strategy - Luxury ProductsOn Mobile - Website Strategy - Luxury Products
On Mobile - Website Strategy - Luxury Productsmobiangle
 
Mse july13 (1/3)
Mse july13 (1/3)Mse july13 (1/3)
Mse july13 (1/3)IIITA
 
Alt tab mobile company overview - feb 2015
Alt tab mobile   company overview - feb 2015Alt tab mobile   company overview - feb 2015
Alt tab mobile company overview - feb 2015Roger Jones
 

Similar a iPhone App Dev Tools (20)

600 most amazing apps PDF
600 most amazing apps PDF 600 most amazing apps PDF
600 most amazing apps PDF
 
Let us learn to put i phone apps in apple’s app store
Let us learn to put i phone apps in apple’s app storeLet us learn to put i phone apps in apple’s app store
Let us learn to put i phone apps in apple’s app store
 
Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhone
 
How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App Store
 
The future is hybrid
The future is hybridThe future is hybrid
The future is hybrid
 
App stores + cordova... get excited!
App stores + cordova... get excited!App stores + cordova... get excited!
App stores + cordova... get excited!
 
Mobile Apps 101 - Mobile Industry Trends and Development Best Practices
Mobile Apps 101 - Mobile Industry Trends and Development Best PracticesMobile Apps 101 - Mobile Industry Trends and Development Best Practices
Mobile Apps 101 - Mobile Industry Trends and Development Best Practices
 
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram Thys
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram ThysOpenbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram Thys
Openbar Kontich // Mobile app automation on a budget by Wim Vervust & Bram Thys
 
Mobile app developer
Mobile app developerMobile app developer
Mobile app developer
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifacts
 
8 Steps to Creating a Mobile App
8 Steps to Creating a Mobile App 8 Steps to Creating a Mobile App
8 Steps to Creating a Mobile App
 
Flutter Android / iOS Build Preparation
Flutter Android / iOS Build PreparationFlutter Android / iOS Build Preparation
Flutter Android / iOS Build Preparation
 
Ideas to App Store (2010)
Ideas to App Store (2010)Ideas to App Store (2010)
Ideas to App Store (2010)
 
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
 
On Mobile - Website Strategy - Luxury Products
On Mobile - Website Strategy - Luxury ProductsOn Mobile - Website Strategy - Luxury Products
On Mobile - Website Strategy - Luxury Products
 
Mse july13 (1/3)
Mse july13 (1/3)Mse july13 (1/3)
Mse july13 (1/3)
 
Alt tab mobile company overview - feb 2015
Alt tab mobile   company overview - feb 2015Alt tab mobile   company overview - feb 2015
Alt tab mobile company overview - feb 2015
 
MSR iOS Tranining
MSR iOS TraniningMSR iOS Tranining
MSR iOS Tranining
 
I Phone Session Mufix
I Phone Session MufixI Phone Session Mufix
I Phone Session Mufix
 

Último

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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
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
 
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
 
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
 
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
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 

Último (20)

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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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.
 
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
 
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
 
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
 
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
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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...
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 

iPhone App Dev Tools

  • 1. iPhone Application Development William Taysom 2009 April 22
  • 4. 30 Million Sold 30 Million Sold.
  • 6. • 480×320 display • 163ppi (50% more than your MacBook) • 8GB, 16GB, even 32GB of Storage Large display, high resolution, gigabyes of storage, ...
  • 7. • Speaker • Mic • Headphone ...a speaker, mic, headphone, ...
  • 8. • Camera • Wireless • GPS ...camera, wireless, GPS, ...
  • 9. • Accelerometer • Ambient Light Sensor • Proximity Sensor ...accelerometer, light sensor, proximity sensor, ...
  • 10. • And it’s a Phone. ...and itʼs a phone. But thatʼs not why weʼre here.
  • 11. This is why weʼre here. 25,000 Apps.
  • 13. You want some. You want some.
  • 14. I will show you how. I will show you how.
  • 15. iPhone application development has four aspects: • Your relationship with Apple, • the iPhone developer tools, • the iPhone Platform, and • the Objective-C programming language.
  • 16. iPhone application development has four aspects: • Your relationship with Apple, • the iPhone developer tools, • the iPhone Platform, and • the Objective-C programming language.
  • 17. iPhone application development has four aspects: • Your relationship with Apple, • the iPhone developer tools, • the iPhone Platform, and • the Objective-C programming language.
  • 18. iPhone application development has four aspects: • Your relationship with Apple, • the iPhone developer tools, • the iPhone Platform, and • the Objective-C programming language.
  • 19. iPhone application development has four aspects: • Your relationship with Apple, • the iPhone developer tools, • the iPhone Platform, and • the Objective-C programming language.
  • 20. Letʼs talk about your relationship with Apple.
  • 21. • Apple makes the device. • Apple provides the tools. • Apple approves your apps. Apple makes the device. Apple provides the tools. Apple approves your apps.
  • 22. • You will have a relationship with Apple. You will have a relationship with Apple. Your relationship is mediated by three web sites:
  • 23. iPhone Dev Center ...the iPhone Dev Center, ...
  • 24. iPhone Developer Program Portal ...the iPhone Developer Program Portal, ...
  • 26. This chart summarizes the iPhone development process from signing up with the Dev Center • to seeing your app on the AppStore.
  • 27. This chart summarizes the iPhone development process from signing up with the Dev Center • to seeing your app on the AppStore.
  • 30. ...at the iPhone Dev Center.
  • 31. iPhone Dev Center Letʼs check it out.
  • 32. This is where you download the SDK, ...
  • 33. This is where you download the SDK, ...
  • 34. ...and is one place where you can read documention.
  • 35. With the SDK, you are ready to develop your app. In the mean time, ...
  • 36. ...you should sign up for the iPhone Developer Program.
  • 37. From the iPhone Dev Cenver, • you learn more about the Developer Program.
  • 38. From the iPhone Dev Cenver, • you learn more about the Developer Program.
  • 39. “iPhone Developer Program: The fastest path from code to customer.” The Program isnʼt just the fastest path: itʼs the only path. To put your App on a device or on the store, you need to join the program.
  • 40. After signing up, you need to be approved. With the Standard program, you sign up as an individual or as a corporation. We signed up as a corporation. We needed to fax Apple a copy of our Articles of Incorporation. Then they called us for confirmation. Then we needed to call them again after they sent us the wrong form email. • In total, the process took us about a month.
  • 41. After signing up, you need to be approved. With the Standard program, you sign up as an individual or as a corporation. We signed up as a corporation. We needed to fax Apple a copy of our Articles of Incorporation. Then they called us for confirmation. Then we needed to call them again after they sent us the wrong form email. • In total, the process took us about a month.
  • 42. Once approved, • you visit the Program Portal.
  • 43. Once approved, • you visit the Program Portal.
  • 44. iPhone Developer Program Portal The portal provides you with provisioning profiles.
  • 45. A provisioning profile allows you to sign apps. A signature gives you permission to test an app on a device or to prepare an app for distribution.
  • 46. iPhone Development Certificate App ID Unique Device ID You need to collect three things in order to generate a provisioning profile:
  • 47. iPhone Development who Certificate App ID Unique Device ID An iPhone Development Certificate tells who will use the profile.
  • 48. iPhone Development who Certificate App ID what Unique Device ID An app ID identifies what app the person is working on.
  • 49. iPhone Development who Certificate App ID what Unique Device ID where A unique device ID determines where the app will be used, which device or the store.
  • 50. It's a bit like the game Cleudo: who done it, where, and with what weapon.
  • 51. While youʼre preparing your app, ...
  • 52. While youʼre preparing your app, ...
  • 53. ...you should visit iTunes Connect. iTunes Connect is...
  • 54. iTunes Connect ...your backdoor enterance into the iTunes Store.
  • 55. From iTunes Connect, • you fill out a paid applications contact so that you can sell your app on the store. You need to provide Apple with your bank and tax info. They need to verify it. The turnaround can be a few days or weeks.
  • 56. From iTunes Connect, • you fill out a paid applications contact so that you can sell your app on the store. You need to provide Apple with your bank and tax info. They need to verify it. The turnaround can be a few days or weeks.
  • 57. While youʼre waiting for your contract, you can upload your app and its accompanying artwork.
  • 58. At this point, you are waiting for your contract and for app approval. Though people have been stuck waiting, my first app was approved within 24 hours. Since then, Iʼve always received feedback within a few days.
  • 59. Okay, • back to the top.
  • 60. Okay, • back to the top.
  • 61. Start by signing up with iPhone Dev Center. Download the SDK. Work on your app.
  • 62. Start by signing up with iPhone Dev Center. Download the SDK. Work on your app.
  • 63. Sign up for the iPhone Developer program.
  • 64. Sign up for the iPhone Developer program.
  • 65. Go through the approval process.
  • 66. Go through the approval process.
  • 67. Gather info for the program portal. • Fill out the paid applications contract from iTunes Connect. Submit your app. • Wait for approval.
  • 68. Gather info for the program portal. • Fill out the paid applications contract from iTunes Connect. Submit your app. • Wait for approval.
  • 69. Gather info for the program portal. • Fill out the paid applications contract from iTunes Connect. Submit your app. • Wait for approval.
  • 70. Gather info for the program portal. • Fill out the paid applications contract from iTunes Connect. Submit your app. • Wait for approval.
  • 71. Enjoy the fruits of your labor.
  • 72. That is your relationship with Apple.
  • 73. Letʼs talk about tools. The iPhone SDK includes everything you need for iPhone (and Mac) development.
  • 74. We will use four tools: • Xcode • The iPhone Simulator • Interface Builder • Instruments
  • 75. We will use four tools: • Xcode • The iPhone Simulator • Interface Builder • Instruments
  • 76. We will use four tools: • Xcode • The iPhone Simulator • Interface Builder • Instruments
  • 77. We will use four tools: • Xcode • The iPhone Simulator • Interface Builder • Instruments
  • 78. We will use four tools: • Xcode • The iPhone Simulator • Interface Builder • Instruments
  • 79. Xcode is Apple's integrated development environment. We will spend most of our time in it.
  • 80. Xcode is a front end for command-line utilities: • compiling with gcc, • linking with ld, • debugging with gdb, and • version control (also called source code management): svn, cvs, or Perforce.
  • 81. • compling ↣ gcc Xcode is a front end for command-line utilities: • compiling with gcc, • linking with ld, • debugging with gdb, and • version control (also called source code management): svn, cvs, or Perforce.
  • 82. • compling ↣ gcc • linking ↣ ld Xcode is a front end for command-line utilities: • compiling with gcc, • linking with ld, • debugging with gdb, and • version control (also called source code management): svn, cvs, or Perforce.
  • 83. • compling ↣ gcc • linking ↣ ld • debugging ↣ gdb Xcode is a front end for command-line utilities: • compiling with gcc, • linking with ld, • debugging with gdb, and • version control (also called source code management): svn, cvs, or Perforce.
  • 84. • compling ↣ gcc • linking ↣ ld • debugging ↣ gdb • SCM ↣ svn, cvs, Perforce Xcode is a front end for command-line utilities: • compiling with gcc, • linking with ld, • debugging with gdb, and • version control (also called source code management): svn, cvs, or Perforce.
  • 85. Window Types Xcode has many types of windows:
  • 91. Project ...the project window (Xcodeʼs main window), ...
  • 93. Organizer ...an organizer for your iPhone, ...
  • 95. We will see all of these windows before weʼre done with Xcode.
  • 96. The iPhone Simulator is great for everyday testing and debugging.
  • 97. Looks just like the real thing in portrait...
  • 99. Thatʼs the gist of the simulator.
  • 100. Interface Builder helps you layout the views for your app.
  • 101. These are your primary IB windows.
  • 102. Main Window The main window shows all of the objects in your interface builder document.
  • 103. View Window The view window is where you layout the subviews of a view.
  • 104. Attribute Inspector The inspector allows you to edit properties of your objects. Here we see the visual attributes of a slider.
  • 105. Connections Inspector And here we see connections between the slider and other objects.
  • 106. Interface Builder can remove the guesswork of in-code layout. But be warned. IB can trip you up due to limitations and bugs.
  • 107. Instruments is used for profiling and, ...
  • 108. ...most importantly, itʼs used in checking for memory leaks.
  • 109. We will have some good runs with Instruments over the next few days.
  • 110. These are tools which weʼll be using. However, the SDK offers many more.
  • 111. We have graphics tools, ...
  • 114. ...and Dashcode. Before native iPhone apps were an option, Dashcode was created to make iPhone specific Web Applications.
  • 115. Hereʼs Dashcode. If it turns out that native development wonʼt work well for you or if you have stronger experience with web development, ...
  • 116. ...I recommend that you look into Dashcode.
  • 117. Xcode, iPhone Simulator, Interface Builder, Instruments...
  • 118. ...these are the tools that weʼll be using.
  • 119. Turn your attention to the iPhone platform.
  • 120. The iPhone OS provides several layers of services. Services on higher layers abstract away details from services on lower layers. Services on lower layers provide more flexibility as well as more inconvenience and tedium. Letʼs start at the bottom.
  • 121. Just like Mac OS X, the iPhone is built on the Mach UNIX kernel. Core OS exposes common UNIX libraries.
  • 122. Core OS POSIX threads for in shared state multithreaded concurrency. • BSD sockets for low level TCP and UDP networking. • Standard C libraries including stdio, stdlib, and the rest.
  • 123. Core OS • POSIX Threads ↣ Concurrency POSIX threads for in shared state multithreaded concurrency. • BSD sockets for low level TCP and UDP networking. • Standard C libraries including stdio, stdlib, and the rest.
  • 124. Core OS • POSIX Threads ↣ Concurrency • BSD Sockets ↣ TCP & UDP Networking POSIX threads for in shared state multithreaded concurrency. • BSD sockets for low level TCP and UDP networking. • Standard C libraries including stdio, stdlib, and the rest.
  • 125. Core OS • POSIX Threads ↣ Concurrency • BSD Sockets ↣ TCP & UDP Networking • <stdio.h> <stdlib.h> ...the rest POSIX threads for in shared state multithreaded concurrency. • BSD sockets for low level TCP and UDP networking. • Standard C libraries including stdio, stdlib, and the rest.
  • 126. Core services include OS X specific libraries as well as popular, relatively new C libraries.
  • 127. Core services include OS X specific libraries as well as popular, relatively new C libraries.
  • 128. Core Services Core foundation is the plain C library which mirrors Objective-C Foundation classes. • Core Location enables your iPhone to determine where it is. • SQLite is for lightweight SQL databases. • libxml2 is for heavy duty XML processing.
  • 129. Core Services • Core Foundation ↣ Foundation Mirror Core foundation is the plain C library which mirrors Objective-C Foundation classes. • Core Location enables your iPhone to determine where it is. • SQLite is for lightweight SQL databases. • libxml2 is for heavy duty XML processing.
  • 130. Core Services • Core Foundation ↣ Foundation Mirror • Core Location ↣ GPS Core foundation is the plain C library which mirrors Objective-C Foundation classes. • Core Location enables your iPhone to determine where it is. • SQLite is for lightweight SQL databases. • libxml2 is for heavy duty XML processing.
  • 131. Core Services • Core Foundation ↣ Foundation Mirror • Core Location ↣ GPS • SQLite ↣ SQL Database Core foundation is the plain C library which mirrors Objective-C Foundation classes. • Core Location enables your iPhone to determine where it is. • SQLite is for lightweight SQL databases. • libxml2 is for heavy duty XML processing.
  • 132. Core Services • Core Foundation ↣ Foundation Mirror • Core Location ↣ GPS • SQLite ↣ SQL Database • libxml2 ↣ XML Processing Core foundation is the plain C library which mirrors Objective-C Foundation classes. • Core Location enables your iPhone to determine where it is. • SQLite is for lightweight SQL databases. • libxml2 is for heavy duty XML processing.
  • 133. The media layer supports 2D and 3D graphics, audio, and video.
  • 134. The media layer supports 2D and 3D graphics, audio, and video.
  • 135. Media For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 136. Media • Core Audio & OpenAL ↣ Audio For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 137. Media • Core Audio & OpenAL ↣ Audio • OpenGL ES ↣ 3D Graphics For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 138. Media • Core Audio & OpenAL ↣ Audio • OpenGL ES ↣ 3D Graphics • Quartz (Core Graphics) ↣ 2D Graphics For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 139. Media • Core Audio & OpenAL ↣ Audio • OpenGL ES ↣ 3D Graphics • Quartz (Core Graphics) ↣ 2D Graphics • Core Animation ↣ Animated Effects For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 140. For audio, we have Core Audio and OpenAL. • OpenGL ES is geared toward 3D graphics. • Quartz, also called Core Graphics, provides 2D graphics support. • Core Animation provides all those animated effects we see on the iPhone and the Mac • including this presentation. •
  • 141. Cocoa Touch contains the Objective-C frameworks you use to build your application.
  • 142. Cocoa Touch contains the Objective-C frameworks you use to build your application.
  • 143. Foundation Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 144. Foundation • NSObject Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 145. Foundation • NSObject • NSString, NSNumber, NSNull Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 146. Foundation • NSObject • NSString, NSNumber, NSNull • NSArray, NSDictionary, NSSet Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 147. Foundation • NSObject • NSString, NSNumber, NSNull • NSArray, NSDictionary, NSSet • NSFileManager, NSFileHandle Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 148. Foundation • NSObject • NSString, NSNumber, NSNull • NSArray, NSDictionary, NSSet • NSFileManager, NSFileHandle • NSURL, NSURLRequest, NSURLResponse Foundation is the essential Objective-C framework. Foundation contains: • NSObject, the root of the Objective-C class hierarchy, • Data type wrappers, • Collections, • Local filesystem access, • HTTP requests, and much more.
  • 149. CocoaAsyncSocket For TCP and UDP networking, nothing beats CocoaAsyncSocket. Though not part of the iPhone SDK, CocoaAsyncSocket is such an valuable networking library that I can't help but mention it.
  • 150. UIKit UIKit contains all the standard views and controllers which make up your application. • From the time the user taps the application icon to the moment when application execution terminates, UIKit is in charge.
  • 151. UIKit UIKit contains all the standard views and controllers which make up your application. • From the time the user taps the application icon to the moment when application execution terminates, UIKit is in charge.
  • 152. UIKit handles the main event loop and calls you when it expects a response. How does it work?
  • 153. How does the touch screen interface relate to the source code implementation?
  • 154. Consider the clock application.
  • 155. What parts make up the clock?
  • 156. UIKit uses windows and views to fill the screen.
  • 157. The OS has a window with the status bar on the top. The application window fills the rest of the screen below it.
  • 158. The window contains the main view for the application.
  • 159. The view has a tab bar at the bottom and another view for the World Clock.
  • 160. The World clock has a navigation bar on top. A table view fills the rest.
  • 161. This table has one cell.
  • 162. The cell contains four labels and a special clock face. This is how the Clock application is divided into views. Each view is a UIView subclass.
  • 163. Here, the views are relabed with class names. The status bar is associated with the UIApplication class. The window is a UIWindow. The tab bar is a UITabBar, etc. The cell is a UITableViewCell. The labels are UILabels, and the clock face is some custom UIView.
  • 164. A viewʼs responsibility is to represent some piece of information or to layout some subviews. UIKit uses controller classes to update and to keep track of views.
  • 165. A UIApplicationDelegate creates the main window, creates the main view controller, and places the controllerʼs view in the window.
  • 166. All this happens in the applicationDidFinishLaunching: method of the UIApplicationDelegate.
  • 167. UIKit has specific controllers for managing certain kinds of views.
  • 168. A UITabBarController mangages a tab bar. It responds to touches on the bar by displaying the corresponding tab. Each tab has a controller.
  • 169. This diagram shows a UITabBarController with several view controllers. The title of a controller provides the label for its tab bar button. The controllerʼs tab bar item tells the tab bar controller which image to show on the tab bar button. The selected controllerʼs view fills the space above the tab bar.
  • 170. In our case, the view is associated with the controller for the World Clock.
  • 171. Since the World Clock has a navigation bar on top, its controller is a UINavigationController. A navigation controller manages a stack of controllers whose views are pushed in from the right. In the clock, the stack only contains one controller.
  • 172. So letʼs look at the address book for a minute. When you touch a Johnʼs name, ...
  • 173. ...his info slides right in. The upper left corner provides a back button.
  • 174. We have three controllers on the UINavigationContoller stack.
  • 175. At the top of the stack, in the bottom right corner of the diagram, we see Johnʼs info. His info is pushed on top up of the All Contacts controller, which, in turn, is pushed on top of the Groups controller.
  • 176. The title of the top controller is used as the title of the navigation bar. The view fills the space under the navigation bar. The navigation item populates the navigation bar with other information including custom bar buttons.
  • 177. The title of the top controller is used as the title of the navigation bar. The view fills the space under the navigation bar. The navigation item populates the navigation bar with other information including custom bar buttons.
  • 178. Letʼs return to the Clock.
  • 179. Notice that the UINavigationController is contained in the UITabBarController.
  • 180. Whenever you have a tab bar controller and a navigation controller, the tab bar should be on the outside and the navigation controller should be on the inside. Iʼve tried it the other way. It just doesnʼt work: the controllers get very confused.
  • 181. What controller manages the UITableView?
  • 182. Why itʼs a UITableViewController. The UITableViewController serves as the data source for the table view. It tells the table how many rows there are and what cell to put in each visible row.
  • 183. How does the table view controller know what to put in the table? How does it remember the list of clocks? The controller asks the model. I canʼt be sure how Apple wrote the Clock app, but we can imagine what the model is like. Since the clock only needs to keep track of a little data, they shouldnʼt bother with SQLite databases or external property list files.
  • 184. Instead, they probably store all the data in the user defaults database. What data specifically?
  • 185. Again, I canʼt be sure, but I guess they use a time zone object.
  • 186. They need to keep an array of time zones: one for each clock. Since you can add and remove clocks, the array might be mutable.
  • 187. For each tab in the app, they need to keep some data. So I suppose they use an array for that.
  • 188. Finally, they could use an index to remember which of the tabs is selected.
  • 189. Step back. • We have our model, • our view, • and our controller. • Combine them...
  • 190. Model Step back. • We have our model, • our view, • and our controller. • Combine them...
  • 191. View Model Step back. • We have our model, • our view, • and our controller. • Combine them...
  • 192. View Controller Model Step back. • We have our model, • our view, • and our controller. • Combine them...
  • 193. Step back. • We have our model, • our view, • and our controller. • Combine them...
  • 195. Weʼll be making three apps over the next few days.
  • 196. Before starting, letʼs finish our overview.
  • 197. The Cocoa Touch layer contains the primary APIs youʼll use in making apps.
  • 198. Turn to other layers as needed. Truly, ...
  • 199. ...the iPhone is an impressive platform.
  • 200. Objective-C is the language you use to speak to the platform.
  • 202. 1981: Brad Cox Objective-C was developed by Brad Cox in the early eighties.
  • 203. 1988: NeXT In 1988 NeXT Inc. licensed Objective- C...
  • 204. NeXTstep ...for their NeXTstep operating system.
  • 205. 1996: Jobs Returns In 1996 Steve Jobs and NeXT joined Apple.
  • 207. Mac OS X ...Mac OS X. Letʼs see that again.
  • 209. Mac OS X ...Mac OS X. One more time.
  • 212. Objective-C Objective-C came along for the ride. Since iPhone OS is a version of Mac OS X, the iPhone's programming language is Objective-C.
  • 214. Objective-C brings some Object-Oriented features from Smalltalk into C.
  • 215. Runtime Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net. • Objects are pointers to C structures. • Methods are C functions. • Classes are constructed at runtime.
  • 216. Runtime • Object ↣ struct objc_object * Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net. • Objects are pointers to C structures. • Methods are C functions. • Classes are constructed at runtime.
  • 217. Runtime • Object ↣ struct objc_object * • Method ↣ C Function Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net. • Objects are pointers to C structures. • Methods are C functions. • Classes are constructed at runtime.
  • 218. Runtime • Object ↣ struct objc_object * • Method ↣ C Function • Class ↣ Runtime Constructed Objective-C uses a lightweight runtime library in contrast to the virtual machines of Java and .Net. • Objects are pointers to C structures. • Methods are C functions. • Classes are constructed at runtime.
  • 219. Syntax Objective-C's syntax is the same as C syntax with a few additions.
  • 220. Directives Directives are prefixed by the at-sign. • These are the ones I type most often. • These, though common, are usually typed by Xcode when you make a new class. • Exceptions arenʼt often caught in Objective-C. They usually represent program errors. • I rarely use any of the directives in this last group.
  • 221. Directives • @"string literal" @property @synthesize @selector() Directives are prefixed by the at-sign. • These are the ones I type most often. • These, though common, are usually typed by Xcode when you make a new class. • Exceptions arenʼt often caught in Objective-C. They usually represent program errors. • I rarely use any of the directives in this last group.
  • 222. Directives • @"string literal" @property @synthesize @selector() • @interface @implementation @protocol @class @end Directives are prefixed by the at-sign. • These are the ones I type most often. • These, though common, are usually typed by Xcode when you make a new class. • Exceptions arenʼt often caught in Objective-C. They usually represent program errors. • I rarely use any of the directives in this last group.
  • 223. Directives • @"string literal" @property @synthesize @selector() • @interface @implementation @protocol @class @end • @dynamic @try @throw @catch() @finally Directives are prefixed by the at-sign. • These are the ones I type most often. • These, though common, are usually typed by Xcode when you make a new class. • Exceptions arenʼt often caught in Objective-C. They usually represent program errors. • I rarely use any of the directives in this last group.
  • 224. Directives • @"string literal" @property @synthesize @selector() • @interface @implementation @protocol @class @end • @dynamic @try @throw @catch() @finally • @protocol() @private @projected @public @synchronized() @encode() Directives are prefixed by the at-sign. • These are the ones I type most often. • These, though common, are usually typed by Xcode when you make a new class. • Exceptions arenʼt often caught in Objective-C. They usually represent program errors. • I rarely use any of the directives in this last group.
  • 225. Messages Method calls, also known as messages, use square brackets. • Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”. • Arguments come after a colon. • For multiple arguments, the method name is broken into parts: one for each argument. The selector here is “stringByReplacingOccurrencesOfString:withString:”. In Objective-C, they like descriptive method names. • A method can take a variable number of comma-seperated arguments after its last colon.
  • 226. Messages • [string integerValue] Method calls, also known as messages, use square brackets. • Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”. • Arguments come after a colon. • For multiple arguments, the method name is broken into parts: one for each argument. The selector here is “stringByReplacingOccurrencesOfString:withString:”. In Objective-C, they like descriptive method names. • A method can take a variable number of comma-seperated arguments after its last colon.
  • 227. Messages • [string integerValue] • [string isEqualToString:anotherString] Method calls, also known as messages, use square brackets. • Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”. • Arguments come after a colon. • For multiple arguments, the method name is broken into parts: one for each argument. The selector here is “stringByReplacingOccurrencesOfString:withString:”. In Objective-C, they like descriptive method names. • A method can take a variable number of comma-seperated arguments after its last colon.
  • 228. Messages • [string integerValue] • [string isEqualToString:anotherString] • [string stringByReplacingOccurrencesOfString:oneString withString:anotherString] Method calls, also known as messages, use square brackets. • Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”. • Arguments come after a colon. • For multiple arguments, the method name is broken into parts: one for each argument. The selector here is “stringByReplacingOccurrencesOfString:withString:”. In Objective-C, they like descriptive method names. • A method can take a variable number of comma-seperated arguments after its last colon.
  • 229. Messages • [string integerValue] • [string isEqualToString:anotherString] • [string stringByReplacingOccurrencesOfString:oneString withString:anotherString] • [NSString stringWithFormat:@"%d %@", number, string] Method calls, also known as messages, use square brackets. • Here the receiver is a variable named “string” and the method name, or selector, is “integerValue”. • Arguments come after a colon. • For multiple arguments, the method name is broken into parts: one for each argument. The selector here is “stringByReplacingOccurrencesOfString:withString:”. In Objective-C, they like descriptive method names. • A method can take a variable number of comma-seperated arguments after its last colon.
  • 230. Method Declarations Method declarations are similar to message sends. • A minus-sign indicates an instance method. A plus sign would indicate a class method. The return type is placed in parenthesis. • The type of a parameter is wrapped in parenthesis after the colon and before the parameter name. • As with messges, the selector is split when there are multiple parameters. • Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a variable number of arguments.
  • 231. Method Declarations • - (NSInteger)integerValue; Method declarations are similar to message sends. • A minus-sign indicates an instance method. A plus sign would indicate a class method. The return type is placed in parenthesis. • The type of a parameter is wrapped in parenthesis after the colon and before the parameter name. • As with messges, the selector is split when there are multiple parameters. • Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a variable number of arguments.
  • 232. Method Declarations • - (NSInteger)integerValue; • - (BOOL)isEqualToString:(NSString *)aString; Method declarations are similar to message sends. • A minus-sign indicates an instance method. A plus sign would indicate a class method. The return type is placed in parenthesis. • The type of a parameter is wrapped in parenthesis after the colon and before the parameter name. • As with messges, the selector is split when there are multiple parameters. • Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a variable number of arguments.
  • 233. Method Declarations • - (NSInteger)integerValue; • - (BOOL)isEqualToString:(NSString *)aString; • - (NSString *)stringByReplacingOccurrencesOfString: (NSString *)target withString:(NSString *)replacement; Method declarations are similar to message sends. • A minus-sign indicates an instance method. A plus sign would indicate a class method. The return type is placed in parenthesis. • The type of a parameter is wrapped in parenthesis after the colon and before the parameter name. • As with messges, the selector is split when there are multiple parameters. • Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a variable number of arguments.
  • 234. Method Declarations • - (NSInteger)integerValue; • - (BOOL)isEqualToString:(NSString *)aString; • - (NSString *)stringByReplacingOccurrencesOfString: (NSString *)target withString:(NSString *)replacement; • + (id)stringWithFormat:(NSString *)format, ...; Method declarations are similar to message sends. • A minus-sign indicates an instance method. A plus sign would indicate a class method. The return type is placed in parenthesis. • The type of a parameter is wrapped in parenthesis after the colon and before the parameter name. • As with messges, the selector is split when there are multiple parameters. • Hereʼs a class method. The comma and ellipses after the last parameter indicate that the method accepts a variable number of arguments.
  • 235. Dot Syntax • [label text] • [label setText:string] Historically, this is how you would get and set a propery in Objective-C. • But that isnʼt the way itʼs usually done on the iPhone.
  • 236. Dot Syntax Historically, this is how you would get and set a propery in Objective-C. • But that isnʼt the way itʼs usually done on the iPhone.
  • 237. Dot Syntax Instead you use a dot for getters and setters. The meaning is the same. The compiled code is the same. Only the notation differs.
  • 238. Dot Syntax • label.text • label.text = string Instead you use a dot for getters and setters. The meaning is the same. The compiled code is the same. Only the notation differs.
  • 239. Fast Enumeration for (NSString *name in names) { ... } Last but not least, Objective-C has a special for loop to iterate across collections.
  • 240. Thatʼs Objective-C in a too-small nutshell. Your printed materials include a concise reference to Objective-C. The materials also include a reference to C and the C Preprocessor.
  • 241. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 242. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 243. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 244. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 245. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 246. To summarize: • Your relationship to Apple defines the process of iPhone development. • The SDK provides you with the tools. • The iPhone platform provides you with capabilities. • Objective-C provides you with the language. • These four aspects cover everything you need in order to develop on the iPhone and get those...
  • 248. The rest of the course is a tutorial in which weʼll build three apps.
  • 249. Temp We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 250. Temp • Interface Builder We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 251. Temp • Interface Builder • Views & Controls We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 252. Temp • Interface Builder • Views & Controls • Text Fields We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 253. Temp • Interface Builder • Views & Controls • Text Fields • Alerts We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 254. Temp • Interface Builder • Views & Controls • Text Fields • Alerts • Autorotation We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 255. Temp • Interface Builder • Views & Controls • Text Fields • Alerts • Autorotation • Localization We start with a temperature converter. • Weʼll learn all about Interface Builder, • views and controls, • how to use text fields, • alert windows, • landscape autorotation, • and weʼll localize the app.
  • 256. The Elements Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 257. The Elements • Table Views Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 258. The Elements • Table Views • Plists Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 259. The Elements • Table Views • Plists • View Controllers Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 260. The Elements • Table Views • Plists • View Controllers • Table View Cells Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 261. The Elements • Table Views • Plists • View Controllers • Table View Cells • Web Views Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 262. The Elements • Table Views • Plists • View Controllers • Table View Cells • Web Views • Animation Our big example is a viewer for the atomic elements sorted in different ways. • Weʼll learn all about table views, • plists, • view controllers, • table view cells, • web views, • animation, and a whole lot more.
  • 263. GLGravity As a final treat, weʼll play with • OpenGL ES • and the iPhoneʼs accelerometer.
  • 264. GLGravity • OpenGL ES As a final treat, weʼll play with • OpenGL ES • and the iPhoneʼs accelerometer.
  • 265. GLGravity • OpenGL ES • Accelerometer As a final treat, weʼll play with • OpenGL ES • and the iPhoneʼs accelerometer.
  • 266. These are our three examples.