Weakable is an easy way to hold weak references in Swift.
With Weakable you can create weak arrays, weak dictionaries and many other cool things.
😎
Requirements
iOS 9+
watchOS 3+
tvOS 9+
macOS 10.11+
Swift 3.3+
Usage
Declare your Weak variable in one of the two ways provided:
//Given a class
class TestClass {}
//and an instance of that class
var aTestObject = TestClass()
//You can create a Weak like this:
var weakTestObject = Weak(aTestObject)
//Or using the shorthand operator ≈
var anotherWeakTestObject = ≈test
Access your variable:
weakTestObject.object //returns your value as an optional, since it may or may not have been released
Operators
Weakable comes with 3 operators, all using the ≈ character (⌥ + x).
prefix ≈
Shorthand contructor for a Weak variable:
//Given an object
let object = AwesomeClass()
//you can create a Weak by either
var weakObject = Weak(object)
//or
var weakObject = ≈object
postfix operator ≈
Shorthand accessor for Weak:
//Given a Weak
var weakObject = ≈object
//you can access the underlying object by
weakObject.object
//or
weakObject≈
infix operator ≈
Shorthand assignment for Weak:
//Given a Weak
var weakObject = ≈object
//you can change the underlying object by
weakObject.object = anotherObject
//or
weakObject ≈ anotherObject
Arrays and Dictionaries
You can safely store your Weak variables in collections (eg. [Weak<TestClass>]). The underlaying objects won’t be retained.
var tests = (1...10).map { TestClass() } // 10 elements
var weakTests = tests.map { ≈$0 } // 10 elements
tests.removeLast() // `tests` now have 9 elements, but `weakTests` have 10
weakTests = weakTests.filterWeaks() // `weakTests` now have 9 elements too, since we dropped the released objects from it
You can also quickly “unwrap” the elements in a Weak collection:
let tests = weakTests.compactWeaks()
The variable tests will now be a [TestClass] containing only the elements that haven’t been released yet.
Weakable

Weakable is an easy way to hold
weak
references in Swift.With Weakable you can create weak arrays, weak dictionaries and many other cool things.
😎
Requirements
Usage
Declare your
Weak
variable in one of the two ways provided:Access your variable:
Operators
Weakable
comes with 3 operators, all using the≈
character (⌥ + x).prefix ≈
Weak
variable:postfix operator ≈
Weak
:infix operator ≈
Weak
:Arrays and Dictionaries
You can safely store your
Weak
variables in collections (eg.[Weak<TestClass>]
). The underlaying objects won’t be retained.You can also quickly “unwrap” the elements in a
Weak
collection:The variable
tests
will now be a[TestClass]
containing only the elements that haven’t been released yet.Installation
Cocoapods
Then
import Weakable
where needed.Carthage
Then
import Weakable
where needed.Swift Package Manager
Then
import Weakable
where needed.Git Submodules
Then drag the
Weakable
folder into your Xcode project.Author
Bell App Lab, apps@bellapplab.com
Credits
Logo image by Артур Абт from The Noun Project
License
Weakable is available under the MIT license. See the LICENSE file for more info.