Laziable



So you declared a lazy var
in Swift thinking it would behave like lazily instantiated variables in good ol’ Objective-C. You thought you would set them to nil
and they would reconstruct themselves later on when needed.
You poor thing.
They don’t.
So why not bring that awesomeness back to Swift in a very lightweight way?
Specs
- iOS 9+
- watchOS 3+
- tvOS 9+
- watchOS 3+
- macOS 10.10+
- Swift 4.2+
Usage
Declare your Lazy
variable in one of the three ways provided:
Suggestion: for the best results, use let
when declaring your Lazy
variables.
class TestClass
{
let lazyString = §{
return "testString"
}
let lazyDouble: Lazy<Double> = Lazy {
return 0.0
}
let lazyArray = Lazy {
return ["one", "two", "three"]
}
}
Access your variable:
let testObject = TestClass()
print(testObject.lazyString§) //prints out "testString"
Set your variable to nil
, so it gets reconstructed again later:
let testObject = TestClass()
testObject.lazyDouble §= nil
Operators
prefix §
- Shorthand contructor for a
Lazy
variable:
let lazyThing = §{
return <#code#>
}
postfix operator §
- Shorthand accessor for
Lazy
:
let lazyString = §{
return "Much cool"
}
print(lazyThing§) //prints out "Much cool"
infix operator §=
- Shorthand assignment for
Lazy
:
let lazyString = §{
return "Much cool"
}
lazyString §= nil //the string "Much cool" has been destroyed
print(lazyThing§) //reconstructs the string and prints out "Much cool"
Notes
For the best results, use let
when declaring your Lazy
variables.
Also, make sure to use [weak self]
or [unowned self]
if capturing self
in a Lazy
variable’s constructor.
Installation
Cocoapods
pod 'Laziable', '~> 1.1'
Then import Laziable
where needed.
Carthage
github "BellAppLab/Laziable" ~> 1.1
Then import Laziable
where needed.
Swift Package Manager
dependencies: [
.package(url: "https://github.com/BellAppLab/Laziable", from: "1.1.0")
]
Then import Laziable
where needed.
Git Submodules
cd toYourProjectsFolder
git submodule add -b submodule --name Laziable https://github.com/BellAppLab/Laziable.git
Then drag the Laziable
folder into your Xcode project.
Author
Bell App Lab, apps@bellapplab.com
Credits
Logo image by Georgiana Ionescu from The Noun Project
License
Lazy is available under the MIT license. See the LICENSE file for more info.
Laziable

So you declared a
lazy var
in Swift thinking it would behave like lazily instantiated variables in good ol’ Objective-C. You thought you would set them tonil
and they would reconstruct themselves later on when needed.You poor thing.
They don’t.
So why not bring that awesomeness back to Swift in a very lightweight way?
Specs
Usage
Declare your
Lazy
variable in one of the three ways provided:Suggestion: for the best results, use
let
when declaring yourLazy
variables.Access your variable:
Set your variable to
nil
, so it gets reconstructed again later:Operators
prefix §
Lazy
variable:postfix operator §
Lazy
:infix operator §=
Lazy
:Notes
For the best results, use
let
when declaring yourLazy
variables.Also, make sure to use
[weak self]
or[unowned self]
if capturingself
in aLazy
variable’s constructor.Installation
Cocoapods
Then
import Laziable
where needed.Carthage
Then
import Laziable
where needed.Swift Package Manager
Then
import Laziable
where needed.Git Submodules
Then drag the
Laziable
folder into your Xcode project.Author
Bell App Lab, apps@bellapplab.com
Credits
Logo image by Georgiana Ionescu from The Noun Project
License
Lazy is available under the MIT license. See the LICENSE file for more info.