Guest User

Untitled

a guest
Jan 23rd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. class DelegateForwarder<T: NSObjectProtocol>: NSObject {
  2.  
  3. // MARK: - Properties
  4.  
  5. weak var internalDelegate: T?
  6.  
  7. weak var externalDelegate: T?
  8.  
  9.  
  10. var asConforming: T {
  11. return unsafeBitCast(self, to: T.self)
  12. }
  13.  
  14.  
  15. // MARK: - Init
  16.  
  17. init(internalDelegate: T? = nil, externalDelegate: T? = nil) {
  18. self.internalDelegate = internalDelegate
  19. self.externalDelegate = externalDelegate
  20. }
  21.  
  22.  
  23. // MARK: - Forwarding
  24.  
  25. override func responds(to sel: Selector!) -> Bool {
  26. return
  27. self.internalDelegate?.responds(to: sel) ?? false ||
  28. self.externalDelegate?.responds(to: sel) ?? false
  29. }
  30.  
  31. override func forwardingTarget(for sel: Selector!) -> Any? {
  32. if self.internalDelegate?.responds(to: sel) == true {
  33. return self.internalDelegate
  34. }
  35.  
  36. return self.externalDelegate
  37. }
  38.  
  39. }
Add Comment
Please, Sign In to add comment