Updating to Swift 4.2

Swift 4.2 is a major release and shipped with Xcode 10. It comes with a lot of code improvements for which the best way to start is to watch the WWDC 2018: What’s New in Swift session. Some of the improvements are easy to implement in your existing code. Replace strongSelf with self SE-0079 makes … 

 

Defer usage in Swift

Although the defer keyword was already introduced in Swift 2.0, it’s still quite uncommon to use it in projects. Its usage can be hard to understand, but using it can improve your code a lot in some places. The most common use case seen around is opening and closing a context within a scope How … 

 

Where usage in Swift

Where is a powerful keyword within Swift to easily filter out values. It can be used in many different variants from which most of them are listed in this post. Usage in a switch Consider having the following enum: enum Action { case createUser(age: Int) case createPost case logout } Using where you can easily … 

 

Controlling Progress children by adding remove

Controlling Progress children by default makes it only easy to add children to a Progress instance, but removing is not possible by default. This could have been useful when you want to use a single Progress instance which can have different children over time. Using a custom class MutableProgress makes this possible. Controlling Progress children … 

 

Updating to Swift 4.1

Swift 4.1 is released on the 29th of March and will be shipped with Xcode 9.3. Although it’s a minor language release, it did bring some improvements. How to get started? First of all, Swift 4.1 is source compatible with Swift 4.0. So no need to rush! Before you start, get yourself up to date … 

 

Optional protocol methods in Swift

In Swift it’s kind of unsupported to implemented optional protocol methods. You can, which is ugly, use the @objc syntax: @objc protocol MyProtocol { optional func doSomething(); } class MyClass : MyProtocol { // no error } Another disadvantage here is that structs are unsupported, as you’re bridging for Objc. Using protocol extensions to create … 

 

Launch time performance optimization

Time for a small post about launch time performance optimization. I did some research in improving the launch time of my current app. I started creating a main.swift file, removed @UIApplicationMain from my AppDelegate and added this line to my main.swift: let StartTime = CFAbsoluteTimeGetCurrent() Resulting in this complete file: // // main.swift // // …