iOS 8 Day by Day: Free Book on iOS 8 Programming
iOS 8 Day by Day is a free book by shinobicontrols iOS evangelist Sam Davies made of 39 short chapters that highlight the key features of iOS 8. Each chapter comes with an Xcode project demonstrating how to use the corresponding feature, either through a standalone app or a playground. The book is aimed at developers who already know the basics of iOS programming in Objective-C and Swift.
iOS 8 Day by Day was born out of a collection of independent posts that Davies wrote from June to December 2014. This makes each chapter self-contained, so it can be read on its own. The book is not meant to be a regurgitation of Apple documentation on iOS 8, rather as a way to explore iOS 8 new features and as a complement to Apple docs. Many chapters additionally sport a lessons-learned section aimed at describing the problems encountered and their associated workarounds.
InfoQ has spoken with book’s author Sam Davies on a range of iOS-related topics, such as the most important features of iOS 8, Swift value and readiness for prime-time, and more.
Could you shortly describe your work as an Evangelist ad shinobicontrols?
shinobicontrols owes a lot to the mobile development community, so one of the aspects of my role as Evangelist is to give something back. This takes the form of content we hope is useful to people - in many forms including blog posts, books, talks at conferences, workshops, videos and training. The content covers topics both focused on shinobicontrols as well as more general mobile development, as demonstrated by iOS 8: Day-by-Day. Through these activities we’re able to play a part helping the community progress. As more and more people become interested in mobile development it’s increasingly important that there are high quality resources available to assist people with their development.
iOS 8 was dubbed by Apple at WWDC 2014 “the biggest iOS release ever.” Indeed, ”iOS 8 day by day” spans over 39 chapters, which is a whooping 16 chapters more than your previous "iOS 7 day by day.” Yet, you had to choose a few new features to leave out, e.g. Metal. What criteria did you apply to select what parts of iOS 8 to focus on?
Writing chapters for iOS 8: Day-by-Day can be a lot of work and so the primary criterium was that the topics had to interest me. iOS 8 included a huge number of new technologies, so there was plenty to choose from this year. I also wanted the topics to be relevant to a wide audience - which (unfortunately) means topics like the Accelerate framework don’t get much of a look-in. Since I don’t know anything about (and don’t much like) games, I made a decision to steer clear of all gaming-related technologies - which is why Metal didn’t make the cut.
Could you name the three most important features of iOS 8 according to some criteria of yours?
Adaptive layout represents the evolution of a layout system into a truly multi-device world. It’s far from perfect, but it does go a long way to solving some of the fiddly problems associated with layouts in storyboards.
Extensions are the first part of what I hope to be a journey into the opening up of iOS to 3rd party developers. I think the model is really good - opening up key areas whilst still maintaining the security and privacy controls users associate with iOS. The initial six extensions points themselves are interesting, but I’m more excited to see this as the beginning of iOS becoming more accessible to developers.
From a personal perspective, I love Handoff. There aren’t many 3rd-party apps that make use of it yet, but just the system-level integrations such as call answering and SMS transfer are great. I think this has great potential for users of multiple iOS devices. Not entirely sure that the UX is there yet, but hopefully this will evolve into seamless multi-device coordination.
As a sneaky fourth entry I’d like to mention playgrounds from a development perspective. These are a truly fantastic way to accelerate development of little bits of functionality, as well as a way to learn about new APIs. I know that Apple are very proud of playgrounds, and I’m really excited to see how they innovate in this area in the future.
Which was the hardest chapter to write in the book? And which was the most fun?
As a general rule, the earlier chapters were more difficult to write because you’re working with much earlier betas. As such there are more bugs, and sparser documentation. The most difficult chapter was definitely the sharing extension, since I was working on that with the first beta. At this stage, the tooling didn’t work, the documentation wasn’t really there, and the ever-moving target of Swift hadn’t really worked out all the intricacies. This also meant that this chapter involved a lot of work to keep it up to date through the different betas. Although it was great to be able to publish early, Apple’s loosening of the NDA this year made writing the book a lot more difficult. A lot has changed since June though, and if you were to write a similar article now, it would be considerably less painful.
The other chapter that was quite hard work was CloudKit, but that was more to do with the sheer size of the platform. It’s a huge, extremely functional system and to cover even just the highlights in one chapter is a massive undertaking.
My favourite chapter was Custom Core Image kernels, because this is a bit of a window into my past as a computer vision researcher. It was a chance to play around with something new and to think about problems that I left behind when I became a software engineer. I guess you might say it was a little self-indulgent.
What is you take on Swift as a replacement for Objective-C?
I’m a big fan of Swift. I’m really impressed with the way it marries fairly academic language design concepts with pragmatism. There are definitely areas in which I think it can improve, but even as it stands I think things like the type system, closures, enums etc make it a step in the right direction. Key to this is the interoperability with Objective-C. There is the odd rough edge, but on the whole the Swift team at Apple has done a great job at building something you can use today.
Is Swift ready for prime-time in your opinion? What are the major hindrances to its general adoption, if any?
The biggest hurdle for Swift at the moment is the tooling and compiler. Both of these are greatly improved compared to the early betas, but still are a way off their Objective-C counterparts. I expect that both of these will improve drastically in the release we see in June. There are only a few reports of attempting to write large apps (or parts of) in Swift - Eidolon from Artsy and and the latest release of the Khan Academy app both feature Swift heavily, and the feeling very much appears to be that the compiler and tooling needs a lot of improvement. One of the great things about Swift is that you can add it to an existing app bit-by-bit due to its interoperability with your Objective-C code. This means that you can experiment with it before having to commit fully.
iOS 7 was introduced more than one year ago. Which iOS 7 feature has not reached the wide adoption that it deserved, in you opinion? I am thinking of, e.g. multipeer connectivity…
I agree with your assessment of multipeer connectivity. When I wrote about that I saw great potential, but have only seen one app that uses it. I think there are a few issues here 1) the UX isn’t great 2) with internet access, devs can get similar experience using location services and the net, so they don’t learn about the new technology 3) there’s a network size limit of 8. I do wonder whether this technology was built to support AirDrop, so Apple decided they might as well open it up to 3rd party developers?
The other technology I’m disappointed not to see more of yet is iBeacons. I was convinced that these have huge potential, but wasn’t entirely sure how they would end up being used. Since I first wrote about them I’ve seen the occasional innovate use - there’s a stadium that uses them to provide micro-localisation, and an art gallery that can create an immersive experience, but I’ve not seen many actual deployments. I think this is because of the hardware aspect associated with this. An iBeacon installation involves a lot of planning, research and deployment in addition to writing the software. I still have my hopes up that I’ll see more of iBeacons than just the one I have in my suitcase so I can see that it’s arriving on the luggage belt at the airport.
Do you think that there are also some iOS 8 features that might not get the adoption they deserve?
It will be a while before we see much in the HomeKit area, for a similar reason as iBeacons - the hardware aspect. This home automation and monitoring is another area that excites me greatly, and I cannot wait for it to just work. However there’s a long road to get there. Hardware manufacturers got the same notice that we developers did, but with a much longer lead-time. I believe that Apple has started working on certifying some devices as HomeKit compatible, but I think it’ll be a while before we see any adoption, and it remains to be seen as to how widespread that adoption will be.
Sam Davies is also the author of iOS 7 Day by Day.