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.
Welcome to another week of the newsletter! I hope you’ve had a great week!
As we head towards this newsletters first birthday (it’s in a few weeks time) I’ve spent a bit of time this week thinking of ways I can further improve the content that appears in your inbox every week as well as coming up with some ideas about how I can increase the newsletters readership. I’ve got a few ideas that I’m mulling over (some of which are relatively simple, some of which are fairly a little hair-brained) but if you have any ideas or suggestions on that front I’d welcome your contribution.
Whilst I go away and continue with my deliberations though, there’s been some great articles this week and some pretty active discussion on the Swift Evolution mailing list so let’s dive in.
Most of the discussion within the Swift community this week has been dominated by Swift Evolution proposal SE-0117. In it’s original form, the proposal pushed the idea that Swift classes should not be subclassable by default – a huge change from the current behaviour and one that got a pretty strong reaction from the community. Since then the proposal has been revised slightly with it’s current content proposing that members of public classes should be useable by other modules but should not be overridable by default. I can understand where the proposal is coming from. Designing class hierarchies that can successfully support inheritance is a difficult task but personally, I have a nasty feeling that accepting this proposal will cause more problems than it is trying to solve. Either way, @mjtsai has a good summary of the conversation from around the community. It’s worth reading.
Designing and developing a successful app is not just about the technology. Getting the word out about your app can be a critical aspect of your apps success. One weapon in the app marketing arsenal is the landing page. You’ll have seen landing pages before – they’re those standalone pages that people use to encourage you to download an app or make a purchase. Here, @ianatiev provides some tips for designing your own.
Prior to iOS 7 we had skeuomorphism – interfaces designed to imitate real-world objects – but with the arrival of iOS 7, app design fundamentally shifted with flat design becoming the design methodology du jour. For many though, the move to flat design went a little too far, with many criticising it for making discoverability within apps significantly more difficult. In this article, @101babich shows how subtle design aspects such as shadows can re-introduce much of this discoverability. Another great article.
When Apple re-launched the AppleTV and opened the platform up to the development community, it opened the door for a whole new type of app. However, the AppleTV is a different beast from the mobile devices were used to designing for and as such has a number of additional factors that need to be considered. In this article, @zackiets highlights many of these factors and provides some great points that are worth thinking about if you are embarking on a tvOS app of your own.
In the words of @marmelroy:
“Multi threading and concurrency are essential for the modern app …and yet Grand Central Dispatch, the system level library for managing concurrent operations, has one of the more cumbersome and unfriendly APIs in the iOS SDK. No more. Swift 3 brings with it many improvements to Grand Central Dispatch syntax and usage. This is a quick look at some of what’s new.”
Error handling is a fundamental part of writing robust applications using Swift. In this article, we go back to first principles looking at how to throw errors, catch and handling errors when they occur as well as taking a brief look at how we can handle errors in asynchronous code. I’d be interested in your views on the article.
Through a combination of their raw and associated values and the properties and methods that you can add to them, enumerations are an extremely useful aspect of the Swift language but why would you want to define an enumeration with no enumeration cases? @ericasadun reveals all.
You may have seen it when trying to compile your Swift code: “expression was too complex to be solved in a reasonable time”. In this article, @cocoawithlove takes a look at why this error occurs, some techniques for avoiding it and also some ideas about a possible solution to this issue in the longer-term.
The recent introduction of Xcode Source Extensions at WWDC promised a number of possibilities for extending Xcode to meet our needs. However, the reality of Xcode Source Extensions is somewhat different with significant limitations and a number of frustrations. In this article, @ericasadun recounts some of this issues she has encountered and explores the art of the possible.
I know this one isn’t quite a library but it’s worth mentioning. If you’re taking a step back and want to learn how large-scale apps are put together one of the best ways to learn is to look at what other people have done. With this in mind, this collection of open source iOS apps by @dkhamsing is particularly useful when trying to identify apps to study.
When it comes to social media, Facebook is obviously one of the key players but until recently, if you wanted to integrate its functionality into your own apps, you had to use an it’s Objective-C based API’s. The good news though is this week saw the release of a new Swift-based SDK providing access to analytics, login, sharing features as well as the Facebook Graph API which will make integrating it into your Swift apps a little easier. It currently supports both Swift 2.2.1 and Swift 2.3 there is also commitment to update it to Swift 3 when the Swift 3 GM is released.
A great video from @xenadu02 taking a look at the Swift open source project, how to get the code, how to compile it as well as the process for creating, reviewing and implementing Swift proposals. A great introduction for anyone wishing to contribute.
Have you ever encountered and app and wondered what code want into it? For open source projects you can look at the code but what if you don’t have the code? In this video, @conradev looks at the tools and concepts involved in reverse-engineering an existing app providing demonstrations using Lyft’s iOS app. An interesting talk.