Learning Swift: Being Lazy with Lazy Instantiation

Lazy loading, or what is also referred to as Lazy Initialization is the process of delaying the instantiation of an object, deferring it until needed. Working with limited or scarce memory resources, it can be helpful to sometimes only take what you need (or in this case use what you need when you need it).

A lazy stored property is a property whose initial value is not calculated until the first time it is used. You indicate a lazy stored property by writing the lazy modifier before its declaration.

— Apple Swift Documentation (http://goo.gl/FHpjMq)

The usefulness of this is apparent when you are in a situation where your variable value cannot be assigned immediately, but is rather dependent on 'outside factors' where the values won't e known until a dependent initialization is completed. Having complex or computational properties are expensive and deferring initialization is a way of optimizing memory usage, accordingly.