Welcome to our final beta. We’ve tested every example in the book and rewritten much of the prose based on the feedback of you, our beta readers, and on our group of tech reviewers.
We’ve reorganized some of the material and changed some of the examples based on your feedback. We’ve expanded some of the coverage and made the code easier to follow along with. We’ve also incorporated a ton of suggestions from the forums.
I keep saying we—but it was Bill and Chris who did all the work. I’m just their editor. I’m really pleased with the book they’ve produced. It’s my go-to book for my own iPhone development. Protocol dictates that I’m supposed to say that any errors that remain are my fault or something like that, but we’d all know I was just being polite.
We’re saving the foreword for the final edition of the book. It was written by someone the authors and I have a lot of respect for. We’ve learned a lot about programming the iPhone from him. He actually wrote his foreword on the anniversary of the App Store’s debut on July 11 and he sent it to us from his iPhone.
It was kind of cool to wrap up our work on this book on that anniversary. The book is off to copy edit and indexing. We’ll take one last look at it before sending it off to be typeset. Thank you again for your help and patience during this long beta process.
Beta 14—-June 17
Apple released iPhone 3.0 today so we can lift our cone of silence and show you the new material that Chris and Bill have been working on for the last couple of months.
You’ll find new chapters on the Game Kit and Map Kit frameworks. Game Kit allows you to write applications that work with other nearby iPhones. Map Kit builds on the location APIs to allow you to take advantage of Google maps from within your application.
The media chapters have been revised and expanded to take advantage of the new APIs. There is a new chapter that shows you how to work with your user’s iPod library from within your application. You also can take advantage of new easier AVRecorder and AVAudioSession APIs for working with audio.
You can still use the SQLite database but we think you’ll prefer to use Core Data now that it is available on the iPhone. We’ve added a new chapter that shows you how Core Data can be used in any application that needs to save data to the phone.
You’ll also find revisions throughout the book to use the latest templates and APIs. We have completely rewritten the Table View chapter. You’ll notice changes in the chapters on View Controllers, the Accelerometer, Fundamentals and Preferences.
This is our final beta before the guys go quiet for the iPhone 3.0 additions. They are already working on the material but we aren’t allowed to share anything that depends on the parts of the OS still under NDA. You’ll notice that most of the remaining errata are from the table view chapter. We’ve decided not to fix them for this beta as we will be replacing it to take advantage of some new iPhone 3.0 APIs.
In addition to fixes in response to the errata and the tech review, you’ll find two content updates in this beta. First, the Network chapter now includes an example of using a web service. We take you through a basic example of consuming and parsing data from Twitter’s public feed. The view controller chapter has also been rewritten. This material is fundamental and so we’ve carefully read your comments and suggestions and address them in this revision.
Well we’ve got good news and we’ve got (I hope better news). Just after we declared the book done and were ready to send this off to production, Apple announced iPhone 3.0. We’ve decided to hold this book to include new material from this upcoming release. That means you will get two betas worth of new material before we go quiet for the 3.0 additions.
Today, we are adding a significant reworking of much of the material in response to the tech review. The second half of this material update is coming in about two weeks. We have decided to hold some of the rewrites until the iPhone 3.0 NDA is lifted because the new APIs significantly change how you might approach some of the programming tasks.
In this beta, you’ll find a new section on using NSZombie to detect over-freed objects as well as a new section on running the Shark profiler on the device. You’ll also find that the technique for using custom IB-designed table cells has been simplified and improved. This beta includes additional details that many people have requested for building the sample applications in the FileIO and the SQLite/Database chapters. Of course you’ll find that many of the errata have been addressed in this release as well.
We’ve added two new chapters for our final beta with new material. You’ll find a new chapter on streaming media. This is not a chapter for the timid. These are C based APIs and a fair amount of low level coding. Then again, your iPhone/iPod touch is an audio player at heart with a lot of rich capabilities. We thought it was important to open up this world to you.
We’ve also taken a step back at the end of the book to consider the things you should do before and after you write the code for your iPhone app. It’s easy to get deep into the APIs and forget that it’s all about delighting the end user.
We are sending this book off to tech review and would love to have more errata from you in the next few weeks while we make this final pass. Thanks again for all of your help and support during this beta process.
This new release includes two new chapters on media. In the first chapter you’ll learn easy ways of playing audio and video. In the second new chapter we’ll dig a little deeper. This will require that we use the C-based APIs. You’ll be able to pull meta-data from the audio files, work with system sounds, and defining audio behavior. We have one more advanced media chapter on the way in our next beta.
We’ve added a lot in this beta. You’ll find new chapters near the end of the book on integrating your iPhone app with other apps and on working with the contact information on your device.
We also have new content at the front of the book. We’ve added a new chapter on Fundamentals to help people new to the platform get started. There’s no way we could teach you everything about Obj-C or Cocoa and we don’t try. But we now lead you through an example that should help you get acclimated. We’ve also revised the chapter on View Controllers and we’ve rewritten the chapter on Nav Controllers. We’d love you to let us know what you think in the forums or by submitting errata.
This beta brings you three new chapters. You’ll learn how to customize the views in your iPhone application in the two chapters on drawing. “Drawing in Custom Views” explains the drawing model-
-portions of the view redraw themselves when it’s time—and shows you how to do some custom vector drawing. “Drawing Images and Photos” shows you how to display pictures on the screen from the camera, from the photo library, or that you distribute with the application. You’ll also learn to react to the user tipping the device in the new “Accelerometer” chapter.
Most of the changes in this beta are to the chapter on Table Views. One of the advantages of still being in beta and not going to print yet is that we can address changes to the SDK and templates. You’ll find the material has been reworked to offer a strategy to use Interface Builder to build table cells visually. We’ve also streamlined the material and get to the code and the examples much more quickly.
This beta adds a chapter on the location APIs. As you develop your iPhone apps you should ask yourself “hey, my phone can do xxxx, how would my app change if it could take advantage of that.”
So, for example, in our networking chapter we showed you how to use Bonjour on the phone. How would your app change if it could seamlessly find other phones running your app? What if it could find the desktop version running on your laptop or desktop machine?
With the location chapter you should ask the same sort of question. “My phone knows where it is. How could that enhance what my app can do.” I’m not suggesting you add gratuitous features that don’t really add much to your app. Once you’ve done the hard work of deciding whether location adds value to your app, you’ll be surprised at how easy it is to implement your ideas.
While we were at it, we responded to close to 200 errata in this beta. The remaining errata require some significant reworking of existing material. You should see those addressed in the coming weeks.
While we work to polish up two new chapters for you a bit more, I wanted to make sure you had this “maintenance release” which addresses a lot of your errata and updates two large examples. It’s not that there was anything wrong with them—but in the time since they were created, Apple has provided new templates
For example, in the File I/O chapter the running example now takes advantage of the new template for navigation-based apps. You may notice that you now do a lot of the setting up graphically in IB that you used to do in code in Xcode.
Also, Xcode now includes a template for a Utility application that we use to modify the example in the preferences chapter that implemented its own “flippable” view. If you’d like to compare it to the old version, follow the link to the OldFilesystemExplorer and the OldFlippingPreferableClock.
We’ve also smoothed the transition out of the introductory material and the UIKit chapters a bit. We have an additional chapter coming that will provide more help and direction in the beginning and then as we move on in the book there’s more help describing the projects as a whole, but this is also the part in the book where you may be ready to take off your mental training wheels, and start intuitively putting together projects and their major parts on your own.
You should have another beta release soon that includes a chapter on using location services and that responds to a whole bunch more errata.
In this release you’ll find new chapters on how to Debug your iPhone app and how to improve its performance. In debugging we look at all of the things you can do to get your code to run correctly (or at all). And in performance we look at what you can do to profile your code using tools like Instruments, Shark, and Clang to get your code running better.