Developing Apps for Apple's iOS: A Beginner's Guide



Are you interested in learning how to write this app?

To fully participate in the exciting world of mobile computing, it is necessary to have working knowledge of at least one of the two major mobile development platforms: Apple's iOS or Google's Android. The best way to learn about these flourishing software ecosystems is to develop an app yourself.  In this blog post, my goal is to share my experiences with potential app developers, and provide them with the best information available should they want to start an exciting new endeavor creating iOS apps.




Why would anyone want to learn how to develop iOS applications? 


This recent posting on tech news site Arstechnica describes the possible financial benefits of becoming a mobile developer. Essentially, most people should keep their day jobs, as the majority will not make enough money to support themselves by writing apps exclusively. However, if you are technically inclined and have some very clever and/or very focused ideas, you may be able to extricate yourself from the corporate treadmill. At the very least, you will gain a very fun and marketable skill, and may even be able to find a day job as an app developer!


Are there any prerequisites?


My recommendation is that you complete at least one year of classes in software development fundamentals, although possessing working experience of at least one development language and data structures would be sufficient. However, I don't want to dissuade anyone from pursuing such a worthwhile goal. Anyone who is highly motivated and ready to overcome a steep learning curve can probably learn the fundamentals of iOS app development.

A data model in Xcode: don't be intimidated. You can learn it!


Do you need to own an Apple computer?

Unlike other software development ecosystems, access to an Apple computer is absolutely necessary for writing iOS apps. Apps are written in Apple's Objective C language. You can download the Apple Xcode application, which provides all of the software infrastructure necessary to develop, test and deploy iOS software written in Objective C. Note that Xcode runs exclusively on the Apple Mac OS. As an aside, Steve Jobs has left his legacy everywhere at Apple: the Objective C computer language was developed at one of Jobs' lesser known companies, NeXT computers, which explains why all of the objects in objective C start with the initials "NS" as a tribute to the NeXTStep operating system.

A screenshot of an app I developed within Xcode. Files are listed on the left, and my wired storyboard is displayed on the right.


Where should you start?

One of the best educational opportunities available today comes in the form of FREE classes offered through sites such as Coursera.org, where you can collaborate with fellow students in  a virtual classrooom environment for accelerated learning. And one of the best classes for learning iOS development is the Coursera class taught by Professor Paul Hegarty at Stanford University. I completed the course that was originally made available last spring. Depending on your coding proficiency, you should allocate between 150-200 hours to complete the class and the six mandatory homework assignments. Yes: anything worth learning will require commitment, and iOS development is definitely not an exception.

Coursera and Piazza are strong supporters of open source learning.


What will I learn?


Here is a short list of great technologies you can expect to learn as you develop iOS code:

1. Differences between the design of iPad and iPhone applications.
2. Object-oriented code development using Objective C.
3. Object-oriented database design using Core Data code libraries.
4. Graphics development using Core Animation and  Core Image code libraries.
5. Sharing data using iCloud.

Once you have completed your iOS class, you will have a basic understanding of iOS app development. However, it will probably take a year or two for you to learn how to use many of the powerful libraries and features available for iOS development and develop more sophisticated apps. For example, the Core Animation, Core Motion and Open GL ES libraries form the backbone for 2D and 3D graphics apps. And the Game Center features will allow you to write apps that users can use to challenge each other. There are even social media features built into iOS for Facebook and Twitter.


Where can you find help if you get stuck?


The key is not to be daunted, and form a support group with other developers to help get you through the rougher patches on the road to becoming an expert iOS developer. I guarantee you that you will be up until the wee hours of night trying to fix issues with your code: don't give up when you reach that point, and have confidence that you will find and fix your code defects. Here are a few suggestions for helping you along:


1. Join the Apple Developer Program. This is actually not optional: you will not be able to deploy your apps to iOS devices without a developer account.
2. Definitely familiarize yourself with Apple's official iOS documentation for developers.
3. Join an Apple users group. If you are in Los Angeles, consider the San Gabriel Valley MUG.
4. Attend a conference and meet other developers. The best conference is Apple's own annual Worldwide Developers Conference. The next one will be starting next week, though it is already a sold-out event.
5. Continue to visit my blog! As I learn to develop new features for iOS apps, I will share my knowledge, so expect many more iOS postings.


What Apps Have I Developed?


The image at the top of this blog post is a screenshot of an app I wrote for the iPad platform to complete the penultimate assignment of the Stanford class. In the master view on the left side of the iPad, a map with annotations shows the various locations where photos were taken from Los Angeles. Clicking on any of the annotations will display the photo in the detail view on the right side of the iPad.

In this later version of the app, the user can save photos to a database using the "Visit" button, then recall them later using the Vacations tab. 

Here's my universal graphing calculator in iPad mode.

Final Words of Encouragement

As previously mentioned, learning iOS development will require diligence on your part. Even as I was working my way through the Stanford class, updates to the XCode application and my iOS devices forced me to learn the differences between layout design in iOS 5 and iOS 6. However, all the work will be worth it when you finally release your first app to the world through the Apple App Store.

I have tried to provide a succinct guide for iOS developer hopefuls. To newbies who have read up to this point, welcome to the world of iOS development!  To more experienced iOS developers, please feel free to leave a comment to suggest great learning materials, websites, and tips to help us all become better developers.

No comments:

Post a Comment