Swift version: 5.0
Swift has two anonymous types:
AnyObject. They are subtly different, and you will need to use both sooner or later.
AnyObject refers to any instance of a class, and is equivalent to
id in Objective-C. It’s useful when you specifically want to work with a reference type, because it won’t allow any of Swift’s structs or enums to be used.
AnyObject is also used when you want to restrict a protocol so that it can be used only with classes.
Any refers to any instance of a class, struct, or enum – literally anything at all. You’ll see this in Swift wherever types are unknown or are mixed in ways that can be meaningfully categorized:
let values: [Any] = [1, 2, "Fish"]
Ideally you should avoid both
AnyObject in your code – it’s better to be more specific if you can be.
Available from iOS 8.0 – learn more in my book Swift Design Patterns
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.