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