import Foundation class MyClass : NSObject { @objc var propertyUsedInKeyPath : NSObject? = nil @objc dynamic var dynamicVarUsedInSelector : Int { return 2 } @objc func overridden() {} @objc func usedViaAnyObject() {} func unused() {} } extension MyClass { @objc func inExtensionAndOverridden() {} } class MySubClass : MyClass { override func overridden() {} override func inExtensionAndOverridden() {} } func test(object: AnyObject, mine: MyClass) { _ = #selector(MyClass.overridden) _ = #selector(getter: MyClass.dynamicVarUsedInSelector) _ = #keyPath(MyClass.propertyUsedInKeyPath) _ = object.usedViaAnyObject?() } class SelfReferences : NSObject { @objc var prop: Int = 2 @objc func foo() { _ = #selector(self.foo) _ = #keyPath(prop) } @objc func bar() { _ = #selector(self.foo) _ = #selector(self.bar) } }