Use the curried function API to call Swift’s automatically synthesized static accessors for instance methods:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
useAClosureBasedAPI(block: ward(self, MyViewController.handleSomething))
// MyViewController.handleSomething is of type (MyViewController) -> (Something) -> Void
}
func handleSomething(_ something: Something) {
...
}
}
Supports non-Void returning closures
/// Returns half of `count` while `self` is alive. If `self` has deallocated, returns the provided default value (nil).
let halfOfCountIfSelfAlive: (_ count: Int) -> Int? = ward(self, else: nil) { _, count in
return count / 2
}
Supports ward for multiple objects
let anObject = MyClass()
ward(self, anObject) { strongSelf, theObject in
...
}
Ward
ward
is a Swift micro-framework to help with cleaning up ugly memory management syntax.Before
After
Under the hood
Other use cases
Supports Swift’s unapplied method references
Use the curried function API to call Swift’s automatically synthesized static accessors for instance methods:
Supports non-
Void
returning closuresSupports
ward
for multiple objectsTry it out!
Carthage
CocoaPods
Swift Package Manager
Authors