Weekly Swift articles, podcasts and tips by John Sundell.

Using self-executing closures for lazy properties

Published on 12 May 2017
Basics article available: Closures

Using self-executing closures is a great way to encapsulate lazy property initialization:

class StoreViewController: UIViewController {
    private lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        let view = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
        view.delegate = self
        view.dataSource = self
        return view
    override func viewDidLoad() {

Support Swift by Sundell by checking out this sponsor:


RevenueCat: In-app purchases and subscriptions made easy. RevenueCat makes it simple to build in-app purchases, manage your products and subscribers, and analyze your IAP data – no server code required.