iphone coding for web developers
DESCRIPTION
A perspective on iPhone development from a server-side developer with very little GUI background. Given at http://www.lfpug.com in London on 26 March 2009.TRANSCRIPT
iPhone codingfor web developers
Matt Biddulph www.hackdiary.com
From websitesto mobile apps
www.twitter.com
m.twitter.com
Twitterifc, Tweetie and Twitterfon
www.facebook.com
m.facebook.com
native iPhone app
Joe Hewitt on the native Facebook app
Joe Hewitt on the native Facebook app
“People must have assumed that
all I had to do was plug Facebook's
data into Apple's ready-to-use UI
components and hit the GO
button.
Joe Hewitt on the native Facebook app
“I wish it had been that easy, but
unfortunately many of the
components I needed were missing
from the iPhone SDK, even though
they existed in Apple's own apps.”
Phonegap
Building native internet apps
Internet app basics
Internet app basics
HTTP
JSON or XML
Regular Expressions
Local storage
HTTP
NSURLRequest is fiddly.
I use GTMHTTPFetcher from
Google Toolbox for Mac.http://code.google.com/p/google-toolbox-for-mac/
or TTURLRequest from Joe Hewitthttp://joehewitt.com/post/the-three20-project/
Mac OS X has NSXMLDocument
for DOM parsing.
The iPhone only has NSXML for
SAX parsing. This is hard.
XML
XML
iPhone ships with libxml2. It is
good, fast and has a nasty C API.
Convenience wrapper functions
make it much easier:NSArray *PerformXMLXPathQuery(NSData *document, NSString *query);
http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html
JSON
Objective C coders make liberal
use of mix-ins. Ruby coders fondly
call this ‘monkeypatching’.
#import "NSString+SBJSON.h"[@"{\"1\":2}" JSONValue]; (returns an NSDictionary)
Regular Expressions
Some people, when confronted
with a problem, think “I know, I'll
use regular expressions.”
Now they have two problems.—usually attributed to jwz in comp.lang.emacs
Regular Expressions
Again, the iPhone’s string handling
has no regular expression builtins.
But it ships with the ICU library
that does.
Regular Expressions
RegexKitLite extends NSString
with methods that bridge to ICU.
This gives you UTF-safe functions
with small memory overhead and
caching.http://regexkit.sourceforge.net/RegexKitLite/
Regular Expressions
As usual with Objective C, the
method names are rather verbose.
split: componentsSeparatedByRegex
gsub: stringByReplacingOccurrencesOfRegex
backrefs: matchEnumeratorWithRegex
Local Storage
SQLite is the iPhone’s default
database management library.
This is a good thing.
Yet again, it’s a C library that isn’t
integrated with Cocoa.
Local Storage
FMDB is an Objective C wrapper
modeled on Java’s JDBC. It’s
sensible.
FMDatabase* db = [FMDatabase databaseWithPath:@"..."];
[db open];
[db executeUpdate:@”SELECT ...”];
http://code.google.com/p/flycode/source/browse/trunk/fmdb
Local Storage
A few words about event-driven code
The user is in control
UI responsiveness and rendering is a priority
Fallacies of networked computing
Fallacies of networked computing
The network is reliable.
Latency is zero.
Bandwidth is infinite.
The world is asynchronous
But threads are hard
Understand delegation
thank you
Matt Biddulphwww.hackdiary.com
Flickr photo heroes:
http://www.flickr.com/photos/scobleizer/1215753803/http://www.flickr.com/photos/envision/3085397880/http://www.flickr.com/photos/frinky/3236718934/http://www.flickr.com/photos/nickbilton/2861938380/http://www.flickr.com/photos/donsolo/2855854548/http://www.flickr.com/photos/en321/209425860/http://www.flickr.com/photos/mastrobiggo/2424561037/