- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
In Swift documentation, it says the following :
Swift provides two special type aliases for working with non-specific types:AnyObject can represent an instance of any class type.Any can represent an instance of any type at all, apart from function types.NOTEUse Any and AnyObject only when you explicitly need the behavior and capabilities they provide. It is always better to be specific about the types you expect to work with in your code.
如果我没有理解错的话,AnyObject
应该在兼容类类型的情况下使用,也就是说不能代表Swift内置的String
,Int
、Dictionary
、Array
等...因为它们在 Swift 中都表示为结构,而不是类。
但是,当我写下面的代码时,可以正常编译,没有任何错误:
var myInt: Int = 10
var myStr: String = "st"
var myDict:Dictionary<String, AnyObject> = ["k1": "1", "k2": 2, "k3": true]
var myArr:Array<AnyObject> = []
myArr.append(myInt)
myArr.append(myStr)
myArr.append(myDict)
println(myArr)
因为我将myArr
定义为AnyObject[]
,所以它应该只能包含类类型,而myInt
、myStr
,myDict
都兼容Any
,不兼容AnyObject
,Any
不兼容`任何对象。
但是,我认为它可以编译的原因是因为 myInt
在内部可以转换为 Objective-C 的 NSInteger
,它是 AnyObject
。
String
/NSString
和 Dictionary
/NSDictionary
也是如此。我的猜测正确吗?那么,这是我的问题:
即使您可以将 Swift 的数组定义为
AnyObject
并且仍然存储 Swift 的结构,例如 Int
或 String
,那有什么意义呢?使用 Any
?在某些情况下,您必须将数组定义为 Any
吗? Dictionary
的值类型如何?
我应该如何决定何时使用
Any
以及何时使用 AnyObject
,尤其是当我处理的类型可以转换为 Objective-C 的 Object 时,比如 String
、Int
、Dictionary
等?
我认为 Cocoa 和 Cocoa Touch 中的大多数方法返回
AnyObject!
,而不是 Any!
。所以我想知道在 Swift 的数组和字典的值类型中使用 Any
的最佳情况是什么。
最佳答案
您可以使用 Any[] 来存储自定义结构。
关于ios - 在 Swift 中使用 'Any' 有什么意义?什么时候使用 'Any' 什么时候使用 'AnyObject' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570445/
我有一张 table People (First_Name, Last_Name)。此表包含与示例中一样重复的记录(并非所有行都重复): First_Name Last_Name John
我用 Java 编写过很多程序,之前也涉足过 C++。我在各种 C++ 书籍中阅读了有关指针的内容,并完成了书籍中的各种示例。 我了解指针的基础知识,但有一件事我一直不清楚。指针在现实世界中的应用是什
线 .Mappings(m => m.FluentMappings.AddFromAssemblyOf() 它有什么作用?它会在派生自 ClassMap 的 Product 类的程序集中查找任
我有用于打印数字的自定义打印功能。我制作了一个 ASCII 版本和一个 UTF-16LE 版本。 UTF-16LE 版本对 0-9 使用全角代码/字符,对十六进制使用 A-F。在调试我的函数时,我注意
这是我的代码片段: float ab(float); 以后 if(ab(temp)
我在一个项目文件中包含以下代码: //begin of the file ((window) => { 'use strict'; class View extends GSM.Event
我一直在到处寻找关于 ? 用法的正确解释。和 *。我注意到我可以使用以下方法拒绝所有用户的访问: 如果我想允许某个组,我应该在其上方添加下一行: 但是当我看到人们使用 ? 时,我开始忘记什么意思,
我正在关注 melon js tutorial .这是在我的 HUD.js 文件的顶部。 game.HUD = game.HUD || {} 我以前在其他例子中见过这个。 namespace.some
我正在处理一个包含数千行代码的文件。我正在第 700 行实现一个算法。我经常不得不离开这些行来检查文件中的其他方法。 导航回到我实际编码的地方通常很痛苦。如果我可以在第 700 行设置一个航路点并为其
我遇到了这段代码 do { if (higherQuality && w > targetWidth) { w /= 2; if (w &
uint8_t * const LCDMem = (uint8_t *) &LCDM3; 此代码在 msp430fg4618 培训套件中用于 lcd 配置。谁能解释一下上述代码的含义? 它允许使用 a
上下文 阅读一些内核代码。 问题 我不明白这行是什么意思 *(void **) &(int[2]){0,PAGE_SIZE}; 还有更多,这是什么意思 {0,PAGE_SIZE} 对我来说,它看起来不
我正在查看 Underscore.js 的源代码库,专门用于 map方法(该页面第 85 行左右,并复制到此处): _.map = function(obj, iterator, context)
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我是一名优秀的程序员,十分优秀!