首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Xcode Swift 4中复制独立于其父类的类

如何在Xcode Swift 4中复制独立于其父类的类
EN

Stack Overflow用户
提问于 2018-05-31 06:25:41
回答 1查看 40关注 0票数 0

我被这个问题难住了:我有一个名为CClass的定制类。在这个类中有一个名为counter的计数器。我按如下方式初始化我的实例。

代码语言:javascript
复制
var ArrayEntity = [CClass]()
var ParentOne = CClass()
var ParentTwo = CClass()

稍后,我将每个父元素分配给一个数组实体,如下所示:

代码语言:javascript
复制
ParentOne = ArrayEntity[i]
ParentTwo = ArrayEntity[i]

有时,两者的i值是相同的,因此两者将引用相同的Array实例。问题是,如果我这样做:

代码语言:javascript
复制
ParentOne.counter = 1
//value of ParentTwo.counter also becomes 1
//ArrayEntity[i].counter also becomes 1

我希望这些家长能够独立于克隆他们的ArrayEntity条目,但是我该怎么做呢?

非常感谢你的见解。希望这只是一个愚蠢的疏忽!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 06:41:33

这就是类的工作方式。赋值不复制对象;它只是创建对同一对象的多个引用。考虑一下:

代码语言:javascript
复制
class Dog {
    var name : String = "Fido"
}
var fido = Dog()
print(fido.name) // Fido
var rover = fido
rover.name = "Rover"
print(fido.name) // Rover

在该代码中,我们更改了类实例rovername属性- fidoname属性也被更改了!这是因为,在第三行中的赋值之后,fidorover引用了同一个实例。

如果您不希望发生这种事情,那么不要维护对一个实例和同一个实例的两个引用。这里的一种可能的策略是给狗一个init(dog:)方法,使一个新的狗以与原始狗相同的属性值开始生活-可以说是一个克隆。现在你已经有了两个独立的对象,它们可以继续独立生活。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档