Swift将对象添加到数组会追加副本而不是引用? [复制]

Posted

技术标签:

【中文标题】Swift将对象添加到数组会追加副本而不是引用? [复制]【英文标题】:Swift adding object to array appends a copy instead of a reference? [duplicate] 【发布时间】:2021-11-09 22:27:41 【问题描述】:

示例代码:

struct test 
    var itest: Int?;


var tests : [test] = [];

var t = test();

tests.append(t)

t.itest = 99;

print(tests[0].itest)
print(t.itest)

生产

nil
Optional(99)

因此,append 命令似乎创建了 t 的副本,而不是它的引用。 如果数组包含 t 的引用,则两个打印输出都必须是 itest=99。

【问题讨论】:

这能回答你的问题吗? Is Swift Pass By Value or Pass By Reference 在 Swift 中,只有类是引用类型。结构是值类型。 【参考方案1】:

结构不是您可能认为的“对象”。这是一个价值。当您分配一个值时,它会被复制。这是设计使然。

【讨论】:

谢谢澄清

以上是关于Swift将对象添加到数组会追加副本而不是引用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionview 将数据追加到数组 Swift

如何向 Swift 数组添加扩展以有条件地追加?

Vue.js 是不是具有将持久对象的副本添加到重复数组的内置方法

如何推送对象值而不是数组中对象的引用

Javascript,追加节点添加整个数组而不是最后一个元素

.net XML 序列化 - 存储引用而不是对象副本