If you're getting ready to jump into iOS development, these practical insights will help you get started.
With the iPad's domination of the tablet space and the iPhone continuing to enjoy strong sales, interest in development for these two platforms keeps growing. I have started getting my head into the iOS development game. These are 10 things I have learned about developing for iPads and iPhones along the way.
1: You need a Mac
It may sound like a conspiracy theory to get folks to buy Macs, but without a Mac you won't be able to get your application onto a device for testing. And you need to be testing on a device.
2: You really should get an iPad and an iPhone or iPod Touch
Yes, there is a simulator. But the truth is, simulators only go so far in replicating the experience a user will have. In my experience with mobile application development, even "simple" applications can be a joy to use in the simulator and a hassle on an actual device. And since you'll likely want your application to work well both for iPhone/iPod Touch and iPad, you will want to get an iPad and either an iPhone or an iPod Touch (the two are identical as far as development is concerned).
3: Objective-C is a bit of a throwback
My first reaction at looking at Objective-C was, "Wow, that looks like the stuff I cut my teeth on!" And I was right. While Objective-C supports modern programming elements like object-oriented code, it is a fairly low-level language, too, and it clearly has not strayed too far from C. For example, you need to prototype functions in a .h file. It reminds me in many ways of the Delphi system in that regard.
4: XCode is radically different from Eclipse and Visual Studio
Coming from the Visual Studio system, with a couple of minor detours into Eclipse, I found XCode to be a bit jarring. The focus is really less on everything that happens in the toolbars, sidebars, and menus, and more on what happens in the middle of the screen, which is writing code as text. This isn't to say that XCode isn't visual or that it lacks tools. But the overall system simply has a different philosophy from the kitchen sink approach that Eclipse and Visual Studio take.
5: XCode is ready to work with Subversion or Git
Out of the box, XCode comes equipped to work with Subversion or Git. You are still free to use any other source control system you want (through command-line tools, if they don't have a GUI system or XCode integration). But if you already use Subversion or Git, you will be happy.
6: You should sign up for your developer account early
It can take up to two weeks for your developer account to be approved. The sooner you sign up, the sooner you will be able to get your app deployed to your test devices or uploaded to the App Store for approval.
7: There are different types of developer accounts
Developer accounts come in three major flavors: individual, company/organization, and enterprise. The main difference between individual and company/organization is that the latter allows you to create users within the account who can access it. Individual accounts are limited to a single user. Enterprise accounts are an entirely different beast: They allow for private deployments, which is exactly what an IT department writing apps for internal use needs. There is also an academic account for students, which allows some access to the developer program.
8: You can write code without a developer account
The good news is, if you are just learning, and are willing to forego deployment to a test device or putting your app in the App Store, you can use XCode and the iOS simulator without a developer account. The developer account has lots of benefits, including early access to betas and such, but for learning purposes, no account is needed.
9: iPads are not just big iPhones
When designing UIs, it's tempting to think that iPads are just large iPhones. While this is more or less true at a code level (apps that run on iPhone will run on the iPad, though iPad-specific apps will not run on iPhone), it is a big mistake for designing the UI. An iPad's bigger screen allows you to pack a lot more information on the screen without overwhelming the user, and the larger screen size will affect what kinds of UI widgets can be comfortably used.
10: There are alternatives to Objective-C and XCode