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 §= nil
Operators
prefix §
- Shorthand contructor for a
Lazy
variable:
- 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.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, [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.