Best iPad Development Tools?
January 11, 2011 11:04 PM   Subscribe

I have been having a wonderful time making a vaporware iPad app using the templates on Omnigraffle, and want to make it real. Other than the Stanford iPhone class, O'Reilly Books, and Stack Overflow, what are other good resources I need for learning to build an iPad app?

This app is (hopefully) going to be used for collecting scientific field data. It is going to be interacting with XML documents and some sort of SQL database. My programming skills are decent, but not fantastic. I can do lots of stuff in Python, though I have never bothered with building a GUI, since most of what I have been doing is processing and analyzing numeric data and text. I am taking classes in Metadata and Database design this next semester (I am a grad student in LIS) so hopefully that will help with the backend.

Long ago, I learned a smattering of C, and have used Matlab as well.

I am also a field scientist(whee multiple grad degrees!) and will be working with others to develop this app, so this is not something I am coming into with no experience from a user's end.

I am primarily wondering whether there are other sources (either books or websites) that I should look at to get started. I had a terrible Python book that set me back weeks, possibly months, before I got comfortable with the language. Are there awesome tools like iPython (but for objective C) that I should be using from the start? Are there influential screeds out there (e.g. PEP 8)that I should read?

Finally, is my vintage summer 2006 Macbook with 2 GB ram and a 1.83 GHz Core Duo (and 10.6.5) up to the task of dealing with the iPad simulator, or should I just bite the bullet and get a new(er) laptop?
posted by rockindata to computers & internet (8 answers total) 23 users marked this as a favorite
APress books are great for learning iPhone development, as well. Apple's documentation are great for learning basic concepts, though their examples leave a lot to be desired. Also your Macbook sounds fine.
posted by Apocryphon at 11:08 PM on January 11, 2011


Your MacBook is more than fine. An external monitor makes it easier to have multiple windows open, which makes it easier to edit code, but your laptop has more than enough horsepower to run the development tools and simulator.

Realistically, the only development tool you'll be using for iOS development is Xcode, which is a set of tools that includes an interface builder and an IDE that pulls together a text editor and interface to the GCC compiler, as well as some other utilities.

You can sign up for a free developer account at Apple's developer site. This gives you access to the iOS tools and simulator.

If you want to deploy an application to a physical device, you need to buy a deployment certificate for $99/yr. This also gives you the opportunity to distribute your app on the App Store.

The best intro programming books for Objective C and iOS are probably Hillegass' Cocoa Programming for Mac OS X and iPhone Programming: The Big Nerd Ranch Guide.

Apple's developer site is actually really well put together. It also includes more "big picture" guides, such as an iOS Human Interface Guidelines document that is worth reading. You'll frequently hit up the API documentation for all the methods available in the various frameworks. It's worth browsing around.

Knowing some basic C helps, but Objective C hides away most of the pointer and reference notation with a different memory management approach based around "reference counting". Memory management for iOS looks and sounds complex, but it's actually pretty easy once you learn the two cardinal rules:

• Any object you create, you need to explicitly release its memory
• Any objects you don't create, you're not responsible for releasing

The development tools include prebuilt libraries for libxml2 and libsqlite3, but these require some knowledge of C and pointers. There are wrappers to these libraries (XML and SQL) that make them easier to use with Objective C.
posted by Blazecock Pileon at 11:29 PM on January 11, 2011 [3 favorites]


If you go to the 'iTunes U' section in the iTunes store & type 'iPhone apps' in the search box, currently 31 university 'how-to' lectures come up. Worth checking. All free downloads. In addition to the Stanford class you mention, Ohio & Princeton feature prominently.
posted by Jonangus at 12:17 AM on January 12, 2011


PS: just noticed the more specific search 'iPad apps' in iTunes U renders 17 free downloads.
posted by Jonangus at 12:25 AM on January 12, 2011


If you want to deploy an application to a physical device... I'm sure I read (when installing the Xcode iOS package) that you can do so to a specific device by knowing its UID. Unfortunately I can't find reference to that now, but it looks like the "Test" step on this page.

Also, I think you only need to join the $99 programme if you want to sell your apps. Free apps can go into the store without it.

Sign up as a developer and read the conditions and info, and you should find reference to these points.
posted by manyon at 3:00 AM on January 12, 2011




Also, if you don't want to drop the 99 dollars until you're convinced that you have a working app, jailbreaking has gotten pretty simple these days, and you can always reflash your ipad/ipod/iphone when you're finished, so as to not void the warranty.
posted by thsmchnekllsfascists at 9:24 AM on January 12, 2011


You can do this. Screed follows.

I started from a similar place as you: lots of experience with matlab, scripting languages, and procedural C/Pascal programming. No serious GUI or Object-oriented programming experience. Science background, reductionist personality, and plenty of other things I really ought to be doing.

I had several unsuccessful passes at Cocoa/Objective-C for the Mac. Maybe once a year I got the itch, went through the same fruitless Hello World rituals: the Hillegass books, Cocoa Dev Central, etc. I read for hours about new developments like CoreData, garbage collection, blocks, and threading and I'd always get stuck with a half-baked seg-faulting mess of a program begging for sweet, sweet [self release].

Last year it finally clicked. I know it is isn't because I got any smarter. I think the enabling factors were the smaller, focussed scope of the iOS, and my belief (without proof) that Apple's class documentation got much, much better sometime in the last three years. I've got two niche scientific apps out, plenty of ideas on the back-burner, and have had way more fun than downloads. Which is still winning in my book.

My basic workflow now is:

0. Periodically seek and review well written pep-talks: objective-C memory management for lazy people, the virtues of the model-view-controller design pattern, etc. Zone-out on the bus meditating about the difference between "-" and "+" class methods, why getter/setter methods are better than shared variables and what @synthesize is all about.

1. Become (re)familiar with Apple's native classes by reading through the "Tasks" section of reference pages like: NSNumber,NSString, NSMutableArray, NSDictionary, UITableView, UILabel, UIActionSheet. Seriously, a web browser is always open with about 20 tabs to class references on my second monitor.

I've learned that a good API, like Cocoa, demotes lots of common problems from "knowing something" to "knowing the name of something".

Apple also has several "Programming Guides" that show how several closely related classes work together, such as the Table Views programming guide. These are full of code snippets for little examples as well as the "big picture" description of what needs to get implemented.

2. Following the model-view-controller design pattern, it is usually easiest to layout your views using XCode's Interface Builder application. This part might even be easier than Omnigraffle!

Any Cocoa tutorial will walk through a simple example of making a single- or few-View application. You'll give the Controller class one member per view element (label, button, table) with an attached IBOutlet keyword. You'll write headers for the methods respond to user interaction. You'll label those with the keyword IBAction. Interface Builder parses all the IBOutlets and IBActions allowing you to match up the view elements with their Controller's outlet members and action methods. (Later you'll learn how to create and "wire up" views programmatically at runtime. IBOutlets are basically bypassed and the user interaction is handled with "selectors".)

3. Implement all those methods! Instead of main(), code that gets executed when the app starts up will show up in the view controller's viewDidLoad{} method. NSLog(@"...") is great for sending C-formatted strings and debug messages to the Console app. Some common complicated tasks like managing tables and PickerViews are already broken down into several small protocol methods by Apple. Sites like StackOverflow seem good enough these days to address most of the persistent API head-scratchers.

4. Clean up time. Enable XCode's leak detector. Read up on whatever the current crop of icon sizes are. Find out about scaling images for the retina display with the @2x marker. Clear an entire afternoon to learn about and impale yourself with the provisioning/code-signing deal that still has me confused in knots though I've run through it twice.

5. Add features and iterate.

Have fun!
posted by fatllama at 9:33 AM on January 12, 2011 [3 favorites]


Thanks, you guys are awesome. I have converted to the two monitor situation long ago- one of the biggest reasons to upgrade my computer, for me, would be so that I would have a graphics card that could drive a bigger monitor!

Now, off to sign up for a developer account!
posted by rockindata at 1:26 PM on January 12, 2011


« Older Please help me help my friend ...   |  My girlfriend doused her eye i... Newer »
This thread is closed to new comments.