Swift version: 5.10
Swift has two anonymous types: Any
and 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 Any
and AnyObject
in your code – it’s better to be more specific if you can be.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
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.
Link copied to your pasteboard.