I'm a bit confused by the usage of AnyObject. Let me provide a few examples.
AnyObject
NSObject() is AnyObject
^ true (as expected)
class MyClass {}
MyClass() is AnyObject
^ true (as expected)
class MyClass {}
MyClass.self is AnyObject
^ true (as expected)
String() is AnyObject
^ true (as NOT expected)
struct MyStruct {}
MyStruct() is AnyObject
^ true (as NOT expected; String appears to be a struct)
String.self is AnyObject
^ false (as expected)
A snippet from Apple's documentation regarding AnyObject:
AnyObject can be used as the concrete type for an instance of any class, class type, or class-only protocol.
Why is an instance of struct is regarded as an AnyObject?