Created
July 18, 2021 11:43
-
-
Save SandeepAggarwal/37d0bc6c27ffc44d131d177f7deb7057 to your computer and use it in GitHub Desktop.
Demonstrates how an obj-c selector can be replaced in Swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
class A { | |
func call(selector: Selector, on destination: Any) { | |
if let object = destination as? NSObject { | |
object.performSelector(onMainThread: selector, with: self, waitUntilDone: true) | |
} else { | |
DispatchQueue.main.async { | |
Thread.detachNewThreadSelector(selector, toTarget: destination, with: self) | |
} | |
} | |
} | |
} | |
class B: NSObject { | |
@objc func tellMe(sender: Any) { | |
print("Message received! for B") | |
} | |
} | |
class C { | |
@objc func tellMe(sender: Any) { | |
print("Message received! for C") | |
} | |
} | |
let a = A() | |
let b = B() | |
let bSelector = #selector(b.tellMe(sender:)) | |
let c = C() | |
let cSelector = #selector(c.tellMe(sender:)) | |
a.call(selector: bSelector, on: b) | |
a.call(selector: cSelector, on: c) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment