OK, third year on this annual book-update plan, here we go: iOS 10 SDK Development now available in beta.
Archives for : publishing
iOS 9 SDK Development is now shipping, and I got my copies today. After some longer-than-expected delays copy-editing and indexing, the Prags surprised us with a very cool feature:
The book is printed in COLOR. Not just 16 pages of color plates in the middle. Like, the whole damn thing is in color. Every code listing is syntax-highlighted, every sidebar is in Prags Purple, and every simulator screenshot with a photo looks like an actual iPhone or iPad screen.
This got mentioned as a possibility during layout review, and I was surprised by it, but I guess with the lower-volume print-on-demand publishing technology they now use, color is more practical than in the old days of offset printing when you needed to work in batches of 5,000.
Confession: I have no idea whether the code examples from Learning Core Audio work on El Capitan and iOS 9. Maybe? Probably most of them? But I’m in a really conflicted state with where that book is.
The book came out in early 2012, which now makes it about four years old. It took about two years off and on to write, 2010 and 2011, with a big push to wrap it up at the end of 2011 because our editor was leaving Pearson to go to Apple. Looking at my mail history, I was approached about replacing Mike Lee on the book in late 2009, so the small amount of material that he and Kevin Avila wrote probably dates back to earlier in that year.
The point of this all being, the book is old now. The stated system requirements are Xcode 4.2, Lion (Mac OS X 10.7), and iOS 5. The examples in the first few chapters that use Foundation instead of Core Foundation actually use manual
release and the
NSAutoreleasePool because the book largely pre-dates ARC (we did finally ARC-ify those examples in the April 2014 update to the downloadable sample code, at the cost of no longer matching the written material in the book).
So now what?
New book alert: iOS 9 SDK Development, now available as a beta ebook from Pragmatic Programmers.
So what’s new and different? Well, the big one is, it hasn’t been three years since the previous edition. In the history of the basic iOS book from Pragmatic Programmers, between me, Bill, and Janie, it’s previously been the case that we’d more or less completely rewrite the whole thing, then not do anything with the title for two or three years. And at that point, we’d find it was so out of date, we either had to do a ground-up rewrite, or pull it out of print. Not to mention that the sales in years 2 and 3 were pretty much zero; nobody wants an iOS 6 book once iOS 7 comes out.
So, new idea: instead of rewriting 100% of the book every three years, how about we rewrite 33% of the book every year? Could that be a sustainable pace? That’s what we set out to try with this edition.
We’re so close to finally having iOS 8 SDK Development out the door! We just got the index back on Friday, and it looks great. I spent some time last night going over it, looking for either missing topics or things that didn’t really need to be in there, and it all looked great. If anything, I came away thinking “did we really write all that?”
And yet I’m kind of wondering: do books even need indexes anymore?
Not that I’ve been even remotely subtle about it, but with today’s release of iOS 8 and the end of the NDA on its SDK, I can now officially announce iOS 8 SDK Development, now available as a beta book from Pragmatic Programmers:
Here’s the tl;dr:
- Pretty much completely rewritten from previous edition
- All code examples use the Swift programming language
- Works through a single app all the way through the book so readers get experience of evolving a non-trivial app
- Shows off iOS 8 features, including adaptive sizing strategies for the iPhone 6 and iPhone 6 Plus
Janie Clayton-Hasz and I are working on the unit testing chapter for the still-unannounced book, and we’ve had enough fun that we decided to share a little bit of what we’re up to.
In the previous edition, I wrote a testing chapter based on Bill’s iCloud recipes project, and it was a nightmare for a couple of reasons. First, a completion handler that was supposed to be called from
-[UIDocument closeWithCompletionHandler:] wasn’t, at least not in iOS 6. Second, iCloud sucks (c.f., “First”). And finally, the whole idea of testing something that takes an unknown amount of time is an interesting problem, one that OCUnit was not built to handle.
So it was really cool that Janie did the research and came back with promising results about asynchronous unit testing in iOS 8 / Xcode 6. Then we jumped into the chapter and… well, it’s not as pretty as the WWDC video would have you believe. It works, but sometimes you have to play a little dirty to get it there.
Interesting development coming out of WWDC this year. When we all logged into the dev center to get the new iOS 8 / Mac OS X 10.10 / Xcode 6 bits, there was a new developer agreement to acknowledge. One of the few people to actually read it, Ole Begemann, noticed that it has a surprising new provision:
Further, Apple agrees that You will not be bound by the foregoing confidentiality terms with regard to technical information about pre-release Apple Software and services disclosed by Apple at WWDC (Apple’s Worldwide Developers Conference), except that You may not post screen shots, write public reviews or redistribute any pre-release Apple Software or services
In the past, all of us developers have had to tip-toe around the new SDKs, APIs, and tools until they’re officially released, which leads to embarrassing situations like WWDC recap sessions at CocoaHeads where we say “well, if they were going to put an Obj-C wrapper around Core Audio, they might…”. This new change in policy would seem to indicate that we’re no longer compelled to engage in such silly antics.
Basically, this update is all about making it easier to work with the download zip. Specifically:
All projects now use “Latest” (OS X | iOS) as their Base SDK: We had been specifying old SDKs that are no longer included in Xcode 5.1, so some readers got hung up on what they needed to do to resolve the “Missing Base SDK” message.
All Foundation projects now use Automatic Reference Counting (ARC): Not as big a deal in our book as you might think, because the middle half the book is all Core Foundation and doesn’t even need ARC, but we had some readers insist the book was broken because they got build errors on
[foo release]and didn’t know what to do (either remove the manual memory-management lines or just turn off ARC). This has the unfortunate effect of making the download code no longer match the book text, and adding some nuisance
__bridgecasts, but ARC is so entrenched at this point, it’s for the best.
Each project now has a README.txt file If individual examples have to get updated in the future, we can log those changes here.
Re-colored the “piano key” buttons in
CH11_MIDIWifiSourceBecause iOS 7 made them look like poorly-colored labels
There are no errata fixes in this go-round, nor any content changes. It’s just about making the download more useful. Might be the last time we need to update it? We’ll see.
A client unexpectedly hitting pause on a major project has me less employed than I’d like right now — yes, I’m available, ping me — so I’ve spent some time in the past few weeks cleaning up some corrections on Core Audio stuff here and there.
I went through the e-mailed errata I’ve received for Learning Core Audio and sent off an update to Pearson, although it’s not yet up on the book’s home page. The biggest fix here is a typo in the chapter 8 audio pass-through for Mac, which sometimes causes bad distortion depending on your selected input device. The bug was caused by mis-counted timestamps and apparently a race condition of which audio unit (input or output) got called first… all owing to the fact that I had set
-1 as a flag value, and then did a comparison against
0 instead of
-1. Anyways, if this is something that bit you, watch the book’s home page for an update, or just grab the updated code from my Dropbox. The zip has a
CHANGES.txt with the other code fixes in this update.
The other thing I had to correct was my ambitious pitch-shifting web radio demo that I developed for my CocoaConf Portland talk. The effect stopped working in iOS 6.1, and fixing it led to a long engagement with the coreaudio-api mailing list and the use of an ADC support incident on my part.