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 last week has seen a lot of discussion around the fate of Dash and it’s developer @kapeli.
As part of transitioning between development account things seem to have taken a turn for the worse with Apple removing Dash from the app stores, and terminating the developers account. This seems to have been for a “significant number of fraudulent positive reviews for their own apps and negative reviews for competing apps”. Something the developer claims they have never done.
When I first saw this news, I thought it was mistake or some sort of unfortunate bug that would be quickly cleared up. However, as the week has progressed and events have unfolded (including @pschiller looking into the situation directly) it appears that Apple are convinced that they are justified in their actions.
Since then there have been a number of twists and turns in this storyline which @reneritchie has summarised nicely. However, I’m not entirely sure that we will ever know the complete truth of what has happened and from my perspective neither side appears to be coming off squeaky clean.
From the developers part, Apple seems to have strong evidence that the developers account is linked to another account with fraudulent reviews, maybe not something that he has direct control over or even knew about, but obviously an issue, especially for Apple. On the other hand though a a recorded phone call from Apple developer relations to the developer in which they admit not informing him of the link also casts doubt that Apple are playing everything completely above board.
When we distribute apps through the app stores we are playing in Apple’s house and by Apple’s rules and as owners and custodians of those stores, Apple have the right and responsibility to police the store both for themselves and on behalf of other developers trying to make their living there. However, with many other blatant transgressions seemingly ignored within the stores it would be nice to have a little consistency.
In 2013, Apple increased the over-the-air download limit for apps to 100MB but as apps continue to compete for users attention they commonly include larger numbers of assets such as fonts, images and videos to help them stand out from the crowd. This in turn leads to larger app sizes and a bigger dent on users download limits. However, we don’t tend to see much information about exactly what the impact is of these larger app sizes. Keen to answer this question, @reinpk did a little experiment to find out.
One of the main reasons I like Swift so much is it’s ability to support a wide range of different programming styles and pick and choose the best aspects of each. In this article, @benjaminencz leverages some of that power by taking a more declarative approach to an NSOperationQueue based API.
Swift was open sourced a little under a year ago, and in that time we’ve seen just over 140 proposals from the community that have incorporated a number of different improvements to the language. In this article, @jesse_squires turns data miner, with a fun little project to pull down the proposals, parse the data and than perform some analysis on the different proposals – all within a Swift playground.
Although most of the time, we get the convenience of working with the high-level Cocoa APIs we sometimes need to get down and dirty with those C-based APIs such as OpenGLES or even these low-level POSIX functions. In this article, Roberto Perez walks through how to use Swift’s unsafe API in Swift 3 to interact with these APIs.
Designing a Robust Large File Download System
If you’ve not come across it before, @subdigital creates a weekly video series called NSScreenCast which is worth watching. As part of developing an associated app for this weekly video series, Ben has been learning and sharing some lessons he’s learnt from designing a robust download system for offline viewing of these videos including tips on persisting and resuming downloads and robust handling of errors.
UICollectionView is an extremely powerful class within the UIKit Framework and provides a range of options when it comes to displaying large data sets. @stablekernel provides a nice tutorial on how to use UICollectionViewFlowLayout to create a multi-sized grid-based layout of your own.
As Swift developers we’re in a bit of a limbo period. Swift 3.0 is out yet many of us still have code bases that have not yet made the transition. With source-breaking changes involved in this transition, how do we develop SDKs that support both Swift 2.x and 3.0? @KingOfBrian provides some advice.
Introducing users to the features of your app, also known as ‘onboarding’ is an important part of generating engagement with your apps users. This is where Onboarding, by @MikeAmaral comes in, providing an easy way to add engaging experiences to your app using only a few lines of code.
In this talk, @dantoml explores application performance from the ground up, looking at the impact that basic things like object allocation and deallocation, reference counting and message dispatch have on app performance before moving on to look at the impact of more advanced Swift features such as protocols and generics.
So you understand the basics of functional programming such as map, flatmap and reduce but you’re struggling to make the jump from the basics to how to apply them in real-world apps. In this talk, @icanzilb helps take your theoretical knowledge and apply it in real-life, using RxSwift (an async, event based framework) to address every day development situations such as tableViews, collectionViews and toolbars.
It’s many people’s dream. The ability to work when you want, where you want with the freedom and flexibility to balance work and home life as you need. With the number of people working remotely steadily increasing and after five years of pursuing this lifestyle for himself, @ossia investigates the benefits and economics of these new distributed teams.