为什么我们不应该使用 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
它可以是一切。
我目前正在学习 swift 观看斯坦福 ios 教程系列。讲师在第一个class中提到我们不应该使用AnyObject。我只是想知道背后的原因是什么?这是一个糟糕的编码习惯吗?还是因为其他一些原因?在此先感谢您的帮助!
AnyObject
表示任何类型的 class(或引用类型)它类似于 objective-C 中的 id
。它是所有 classes 都隐式遵守的协议。
问题是编译器在编译时不知道它是哪种对象,这意味着您可以轻松构建应用程序将方法发送到错误的对象。
这通常会在 NSObject
subclasses "unrecognized selector sent to instance XXXXXX
" 上触发此类异常并崩溃。
Swift 喜欢强类型,这真的很有用,因为你可以在问题发生之前解决问题,但是如果你将一个对象定义为 AnyObject
它可以是一切。