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.
News
Swift 4.0
This week has seen the Swift team releasing some details about the plan for Swift 4.0 with @dgregor79 fleshing out some of the high-level details on the Swift.org website. From a timescales perspective it’s looking like 2017, for a release date, presumably to tie up with a potential release date for iOS 11 if Apple stays with it’s normal annual release cycle. What’s more interesting though is that the plan for Swift 4.0 is split into two main stages. The first stage will focus on the source and API stability goals along with enhancements to generics and a re-evaluation of the design for Strings in Swift before moving onto the second stage which a contains a mix of other features.
github.com
Business
How Our App Went From $20,000/day to $2/day in Revenue
The days of the App Store gold-rush are long gone with the today’s App Store being both a competitive and cut-throat marketplace with some app succeeding and some apps reaching the point they are no longer sustainable. @robjama has reached just this point and in this article recounts his journey with his app Next Keyboard and imparts some of the lessons he and his team have learnt along the way.
medium.com
Under the Radar #59 – App Store Search Ads
With the arrival of Search Ads in the App Store developers have a new and potentailly lucrative way of getting their apps in front of a much large audience of potential users. However, if you’re new to online advertising and you don’t know your CPC from your CPM or your CTR from your CPA, @marcoarment and @_DavidSmith are here to help, walking through the basics of online advertising as well as some of the finer points to consider when placing ads in the store.
relay.fm
Design
A Practical Guide to Convert Your Sketches to Working Prototypes
The journey from idea to app store is a long one. One of the key stages on that journey is coming up with your ideas. What will the app look like? How will it work? In this article, @ZubkoYaroslav provides some great tips for you to use on that journey including details of his own design process and the tools he uses on the way.
uplabs.com
Sketch iOS 10 GUI Templates
Since iOS 10 was released, I’ve been poking around for a good set of Sketch Templates that I can use when drawing up app designs and putting together mockups. Howver, it looks like my search is over with this free resource from @TusharMerwanji which covers almost all of iOS 10’s built in functionality. A good job from Tushar and a nice option if Sketch is your design tool of choice.
tusharmerwanji.co.uk
Swift
Optional Non-Escaping Closures
Closures are a common aspect of programming in Swift but they do have a few complications when we start passing them into functions. In this article, @olebegemann takes a detailed look at the difference between escaping and non-escaping closures and why differentiating between them is important.
oleb.net
Code
Event Delivery on iOS
“If your iOS application handles taps, swipes, pans or any other type of user interaction, it’s using events behind the scenes.” – In this three-part mini-series (Part 1, Part 2, Part 3), @balexander provides a great introduction to touch events and how the responder chain works on iOS.
medium.com
Taming the Massive Controllers in iOS
Massive View Controller Syndrome is a common problem within iOS app development. If you’ve never heard of it before it’s the tendancy for View Controllers in the MVC architectural paradigm to become the dumping ground for a an ever increasing range of responsibilities which in turn leads to view controllers of ever increasing size. In this series (Part 1, Part 2, Part 3), @azamsharp attempts to tackle this problem putting view controllers on a diet with a series of that look at making our view controllers smaller, more maintainable and easier to test.
medium.com
Slicing
Love them or hate them, it is not uncommon to see Singletons used within the design of iOS applications – even Apple uses them on occasion with things like the Application and NotificationCenter classes. However, although convenient, Singletons do have their issues and it’s generally better to avoid them in your own code. In this article, @khanlou shows us how to do just that using a combination of Swift protocols and dependency injection to slice up an existing Singleton into a series of smaller, more maintainable non-singleton classes.
khanlou.com
Exploring Firebase on Android & iOS: Remote Config
It’s a common scenario. We need to do an update to our app with a small tweak. However, to make this change available to our users we have to go through the hassle of rebuilding the app, publish it to iTunes connect and wait whilst the app goes through app-review before the change finally becomes available to users. ut what if you didn’t have to go through these steps? What if we could externalise your apps config and alter both the look and feel of your appplication without the need to republish through the app store? Well this is one feature that Google’s Firebase platform provides and in this article, @hitherejoe investigates just what is possible.
medium.com
Libraries
IGListKit
Back in Issue 57 I linked to a talk from @_ryannystrom about how @instagrameng had refactored their apps feeds using a library they had developed called that used a combination of collection views and a clever diffing algorithm for fast and flexible list management. This week saw their library finally released into the open source community and looks like a great option if your app presents any sort of large data sets.
github.com
Videos
Extending Xcode 8
Alcatraz is dead. Long live Alcatraz. With the arrival of Xcode 8, Apple introduced a new mechanism for extending the Xcode source editor with app extensions. In this talk, @danielpunkass provides a great overview of how they are distributed, their current tradeoffs and limitations as well as how to keep the extensions host app in sync with the extension itself.
realm.io