protocol AnyObject The protocol to which all classes implicitly conform. When used as a concrete type, all known @objc methods and properties are available, as implicitly-unwrapped-optional methods and properties respectively, on each instance of AnyObject. For example: class C { @objc func getCValue() -> Int { return 42 } } // If x has a method @objc getValue() -> Int, call it and // return the result. Otherwise, return `nil`. func getCValue1(x: AnyObject) -> Int? { if let f: () -> Int = x.getCValue { // <=== return f() } return nil } // A more idiomatic implementation using "optional chaining" func getCValue2(x: AnyObject) -> Int? { return x.getCValue?() // <=== } // An implementation that assumes the required method is present func getCValue3(x: AnyObject) -> Int { // <=== return x.getCValue() // x.getCValue is implicitly unwrapped. // <=== } See Also: AnyClass Import import Swift