当前位置: 首页 > 面试题库 >

为什么数组在Swift中是AnyObject?

邵子平
2023-03-14
问题内容

我无法理解AnyObject的局限性。

您可以从标题中看到Array是一个结构。但是,此代码有效:

var whatobject : AnyObject
whatobject = [1,2]

而且不只是文字数组:

var whatobject : AnyObject
let arr = [1,2,3]
whatobject = arr

但是,我不能为我分配一个结构whatobject

struct S {}
var whatobject : AnyObject
whatobject = S() // error

那么,数组毕竟不是真正的结构吗?


问题答案:

这是桥接出现时最有趣的部分…

默认情况下,Swift bridge

  • Int (和朋友) NSNumber
  • StringNSString
  • DictionaryNSDictionary

因此,如果需要,编译器会将它们更改为对象

你可以做

var num : AnyObject = 1 // I think num is now NSNumber
var arr : AnyObject = [1,2,3] // I think arr is now NSArray of @[@1,@2,@3]

并且您不能将sturct/ 分配给enumAnyObject因为它们不是对象类型(可以Any用来保存它们)



 类似资料:
  • 本文向大家介绍在PowerShell中什么是数组?,包括了在PowerShell中什么是数组?的使用技巧和注意事项,需要的朋友参考一下 数组由一组具有相同数据类型或不同数据类型的元素组成。当输出包含多行时,输出或存储的变量将自动成为数组。其数据类型为Object []或ArrayList,基本类型为System.array或System.Object。 例如, IPConfig的输出是一个数组。

  • 问题内容: Swift中的切片是什么,它与数组有何不同? 从文档中,下标(Range)的类型签名为: 为什么不返回另一个而不是一个? 看起来我可以将切片与数组连接起来: 但这会产生错误: 无法找到接受提供的参数的“下标”的重载 什么是切片? 问题答案: 切片指向数组。当数组已经存在并且切片只能描述其所需部分时,再也没有必要制作另一个数组。 加法会导致隐式强制,因此可以正常工作。为了使您的作业正常进

  • 主要内容:数组的概念和定义,数组内存是连续的,数组的初始化在《 C语言数据输出大汇总以及轻量进阶》一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: 运行结果: 矩阵共有 16 个整数,我们为每个整数定义了一个变量,也就是 16 个变量。那么,为了减少变量的数量,让开发更有效率,能不能为多个数据定义一个变量呢?比如,把每一行的整数放在一个变量里面,或者把 16 个整数全部都放在一个变量里面。答案当然是肯定的,办法就是使用数组(Array)

  • 问题内容: 每个元组基数都由自己的类型快速表示(就像我所知道的任何其他强类型编程语言一样),所以我们有 由于我们有几种不同的类型,每个基数一种,因此它们必须是有限的。 在Scala中,最多可达到,在Haskell中,当前限制应为64。 快速的限制(如果有)是多少?另外,类型实现是由编译器生成的还是我找不到的显式实现? 问题答案: 在当前版本的Xcode 6 Beta中,编译失败时,元组的Arity

  • 给定一个值数组,我如何将它分成由相等元素组成的? 给定这个数组 我想要这个输出 解决这一问题的一种可能方法是创建某种索引,以指示每个元素的出现情况。 最后使用索引重建输出数组。 但是,使用此解决方案,我会丢失原始值。当然,在这种情况下,这不是一个大问题(一个值仍然存在,即使重新创建,),但我想将此解决方案应用于像这样更复杂的数据结构 实际上,我正在寻找的函数是与相反的函数 我希望我已经说清楚了,如

  • 问题内容: 有什么理由使Java中的数组成为对象? 问题答案: 因为Java语言规范这么说 :) 在Java编程语言中,数组是对象(第4.3.1节),是动态创建的,并且可以分配给对象类型(第4.3.2节)的变量。Object类的所有方法都可以在数组上调用。 因此,与C ++不同,Java提供了真正的数组作为一流的对象: 有一个成员。 有一个方法可以覆盖class中同名的方法。 再加上班上的所有成员