Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. final class WeakStrongButton {
  2. private weak var weakItem: AnyObject?
  3. private var eventClosure: (() -> Void)?
  4.  
  5. func fireEvent() {
  6. guard let eventClosure = eventClosure else { return }
  7. eventClosure()
  8. }
  9. func onEvent<T: AnyObject>(weakly object: T, closure: @escaping (T) -> Void) {
  10. eventClosure = { [weak object] in
  11. guard let object = object else { return }
  12. closure(object)
  13. }
  14. }
  15. }
  16.  
  17. final class Foo {
  18. let button = WeakStrongButton()
  19.  
  20. init() {
  21. button.onEvent(weakly: self) { foo in
  22. print(foo)
  23. }
  24. }
  25. deinit { print("deinit") }
  26. func fire() {
  27. button.fireEvent()
  28. }
  29. }
  30.  
  31. do {
  32. let foo = Foo()
  33. foo.fire()
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement