AnyObject

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