[String: AnyObject] 和 [String: Any] 有什么区别?

4

我通常使用[String: AnyObject]。但我注意到Alamofire使用[String: Any]。我在某个地方读到AnyAnyObject“更优”或者“包含”AnyObject。但除此之外,我不知道它们之间是否有任何区别。如果我将字典定义为[String: Any]而不是[String: AnyObject],长期来看是否会有任何缺点?谢谢。


1
我相信 Any 可以引用任何类型,例如一个闭包/函数。 AnyObject 必须是类的一个实例。 - francisaugusto
@francisaugusto 但我的意思是,如果可以用 Any 处理,为什么还需要 AnyObject?我认为 AnyObject 肯定有 Any 无法胜任的功能。 - Chen Li Yong
1
请在此处查看:https://dev59.com/oF8e5IYBdhLWcg3wYJiu#25809377 - mugx
1
@AndreaMugnaini 哦,好的,最后一个SO链接确实回答了我的问题。谢谢! - Chen Li Yong
1个回答

2
任何允许使用不同类型的混合,包括函数和非类类型,例如Int、String和Bool。根据文档,在此数组中的元素是值类型的结构体,所以理论上AnyObject 在这些情况下不应该起作用。
我们将使用来处理类类型,因为它们比更具体。但是再次强调,使用仅仅是一个选项。
您可以在此处找到更多解释:https://medium.com/@mimicatcodes/any-vs-anyobject-in-swift-3-b1a8d3a02e00。希望您通过查看此链接后能够清除所有疑惑。

我明白了。所以我认为在这种情况下最好使用[String: Any],因为它与更多类型兼容。我通常将String、Int、Double、Bool等存储在我的字典中,因此使用AnyObject实际上是不正确的。谢谢! - Chen Li Yong
1
在Swift中自信地使用Any。 - Jaydeep Vyas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接