为什么我们不应该使用 AnyObject?

why we shouldn't use AnyObject?

我目前正在学习 swift 观看斯坦福 ios 教程系列。讲师在第一个class中提到我们不应该使用AnyObject。我只是想知道背后的原因是什么?这是一个糟糕的编码习惯吗?还是因为其他一些原因?在此先感谢您的帮助!

AnyObject 表示任何类型的 class(或引用类型)它类似于 objective-C 中的 id。它是所有 classes 都隐式遵守的协议。
问题是编译器在编译时不知道它是哪种对象,这意味着您可以轻松构建应用程序将方法发送到错误的对象。
这通常会在 NSObject subclasses "unrecognized selector sent to instance XXXXXX" 上触发此类异常并崩溃。
Swift 喜欢强类型,这真的很有用,因为你可以在问题发生之前解决问题,但是如果你将一个对象定义为 AnyObject 它可以是一切。