Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- final class WeakStrongButton {
- private weak var weakItem: AnyObject?
- private var eventClosure: (() -> Void)?
- func fireEvent() {
- guard let eventClosure = eventClosure else { return }
- eventClosure()
- }
- func onEvent<T: AnyObject>(weakly object: T, closure: @escaping (T) -> Void) {
- eventClosure = { [weak object] in
- guard let object = object else { return }
- closure(object)
- }
- }
- }
- final class Foo {
- let button = WeakStrongButton()
- init() {
- button.onEvent(weakly: self) { foo in
- print(foo)
- }
- }
- deinit { print("deinit") }
- func fire() {
- button.fireEvent()
- }
- }
- do {
- let foo = Foo()
- foo.fire()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement