Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DelegateForwarder<T: NSObjectProtocol>: NSObject {
- // MARK: - Properties
- weak var internalDelegate: T?
- weak var externalDelegate: T?
- var asConforming: T {
- return unsafeBitCast(self, to: T.self)
- }
- // MARK: - Init
- init(internalDelegate: T? = nil, externalDelegate: T? = nil) {
- self.internalDelegate = internalDelegate
- self.externalDelegate = externalDelegate
- }
- // MARK: - Forwarding
- override func responds(to sel: Selector!) -> Bool {
- return
- self.internalDelegate?.responds(to: sel) ?? false ||
- self.externalDelegate?.responds(to: sel) ?? false
- }
- override func forwardingTarget(for sel: Selector!) -> Any? {
- if self.internalDelegate?.responds(to: sel) == true {
- return self.internalDelegate
- }
- return self.externalDelegate
- }
- }
Add Comment
Please, Sign In to add comment