Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.
The big news of last week was the release of the iOS 9.3 Beta. The headline item is the inclusion of a brand new feature called Night Shift that sports functionality similar to that of f.lux, an application I’ve mentioned previously in the newsletter. The idea behind the new feature is to change the color temperature of the screen toward the warmer-end of the spectrum as the evening draws in. This make things a little easier on your eyes and also helps avoid the bright blue light that can sometimes make it harder for you to sleep.
In addition to Night Swift, iOS 9.3 beta also sported a couple of other features that are worth mentioning. Despite Apples choice of imagery, Notes can now keep things private using TouchId, the News app gets more personal recommendations and the Health app gains enhanced app discovery. In addition, the classroom experience also receives some attention with single iPads now being able to support multiple users. This last one has implications beyond the classroom walls though and although it’s unlikely we’ll see it in the mainstream release of iOS any time soon, it does open the door for this type of feature some time in the future. I suspect that particular feature is one that would be warmly received by many, especially in households like mine where multiple kids fight over the same devices.
So this was a bit of a surprise to me when this came up during the week. It appears that Apple has announced that as of 30th June 2016, the iAd App Network will be discontinued, closing off one potential source of revenue for developers. With that said, with the introduction of ad blocking in iOS 9, maybe I shouldn’t have been so surprised.
With all the articles, blog posts and general buzz around the Swift programming language these days, it is easy to assume that most of the top apps would have already made the transition to Swift. Instead of simply assuming this @ryanolsonk set out to find out for himself, performing a detailed analysis of the top 100 free apps in the app store. In this article he publishes the results and some of them might surprise you.
Why Every Developer Should Make A Game
This is an interesting article from @TheChiScroller in which he puts the case forwards for why every developer should, at some point, develop a game and even more so if you’re just starting out with iOS development. It’s an interesting idea.
When designing and developing an app, it’s often easy to forget that alot of the work for the app goes on after the app is released. In this article, @kenyarmosh looks at the various things you should consider when deciding how often to update your app.
If you haven’t already heard, the Apple TV Tech Talks are in full swing with various events happening around the globe. In this article, @danielpunkass provides some post event musings on the position of the Apple TV in in the living room. He also includes is views on what types of apps may work well in that sort of environment.
This week I published another post on the site that continued our look into the various collection types in Swift. This time we cover dictionaries. If you haven’t read the post, I’d love to hear you’re feedback. After all, it’s the only way I’ll improve. Just reply to this email or leave a comment on the site.
Lenses in Swift (Or How To Change Parts of Immutable Objects)
As I write more Swift code and read more articles, I’m slowly getting my head around some of the more advanced ideas from Functional Programming. With that said, I hadn’t really come across the concept of lenses until I read this article from @narfdotpl. I’d definitely recommend it if you’re trying to get up the functional programming learning curve.
“State restoration is an often-overlooked feature in iOS that lets a user return to their app in the exact same state as when they left it – regardless of what’s happened behind the scenes.” In this article @lukeparham walks us through how adding this state preservation and restoration functionality to our own apps.
ReplayKit was introduced in iOS 9 and added the ability for users to both record, and share, gameplay footage with their friends. In this article, Davis Allie, shows us how to add this feature to your games through the use of RPScreenRecorder.
LLVM is a fundamental component within the Xcode toolchain and in this article, one of it’s key architects @clattner_llvm takes us through some of it’s history as well as some of the design decisions that set it apart from other compiler implementations. The article can get a bit technical in places but it’s a great overview of the compiler toolchain and will give you a much better understanding of the journey your source code goes on before it winds up in your app.
This week the team at @cocoapods made life even easier for us with the release of a beta version of their new Cocoapods app for OSX. All the convenience of Cocoapods, right from your desktop. They’re also looking for volunteers to help move the app forwards so if you’re up for the challenge make sure you get involved.
Although Xcode is a great IDE one of the things it does lack when compared to some of the tools for other languages, is a comprehensive set of refactoring tools. To address this, @Injection4Xcode has built Refactorator, an Xcode plugin to add some additional refactoring capabilities to Xcode such as variable and function renaming as well as some visualisation capabilities. It’s available via the Alcatraz Package Manager or from the link below.
I think it’s fair to say that nearly every iOS app these days has some sort of network component and we all know that means a whole load of issues when it comes to testing. In this post though @hanning_thomas looks the Network Link Conditioner, a tool from Apple that allows you to simulate a whole variety of network conditions without ever needing to set a foot outside.
Those early stages of app development where you’re still working out the workflows and movements of your user through the screens in your app can often be critical to the eventual end-user experience so having the ability to rapidly design and prototype app transitions without the need to write acres of code can be a real boost for productivity. This brings us to IBAnimatable, a tool from @jake_lin that allows you to prototype and design your app transitions quickly and easily all from within Interface Builder.
There as been alot written lately about the need to combat the problem of massive view controllers. MVP, MVVM and VIPER are all focused on this problem and in this video, @benjaminencz takes a look at another popular alternative – Redux, an alternative and variation of the Flux framework that was originally developed at Facebook and is now used for most of their web applications.
This one is a bit of a throw-back to last years SwiftSummit but I came across it this week and thought it was interesting. In this video, @wilshipley shows us some tips and tricks of how to share Swift code between iOS and OSX without the need for a bunch of #ifdefs and nasty workarounds.
Towards an Understanding of Technical Debt
Originating in the work of Ward Cunningham in the late 90’s the term “Technical Debt” is commonly talked about when it comes to any type of legacy code base. In this article @kellan raises his concerns about the term becoming overloaded. He also puts forward a strong case about why we should be careful not conflate different ideas under the term, especially if we are going to address the different problems that the term has grown to represent.