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

时间:2016-03-25 09:43:51

标签: ios swift anyobject

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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