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.
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 §= nilOperators
prefix §- Shorthand contructor for a
Lazyvariable:
- Shorthand contructor for a
let lazyThing = §{
return <#code#>
}postfix operator §- Shorthand accessor for
Lazy:
- Shorthand accessor for
let lazyString = §{
return "Much cool"
}
print(lazyThing§) //prints out "Much cool"infix operator §=- Shorthand assignment for
Lazy:
- Shorthand assignment for
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.1Then 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, [email protected]
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.

