2016-01-08 135 views
2

我有一个双视图控制器。呈现视图控制器更改主视图的值

可以说VC1和VC2,我从VC1展示视图VC2并发送一个NSMutableArray。像这样:

let vc2 = VC2() 
vc2.array = self.someArray 
self.presentViewController(vc2, animated: true, completion: nil) 

我写了一个委托,在事情发生变化时通知VC1。但是,当VC2改变阵列的值并且在VC1中关闭阵列时自动改变。我只想在调用委托方法时才更改它。

我找不出来。这没有意义。

对不起,对英文不好。

祝您有愉快的一天。

+0

'self.someArray'类型是什么? – jtbandes

+0

这是NSMutableArray @jtbandes – Emre

+0

这就是问题所在。 – jtbandes

回答

0

NSMutableArray叫做可变是有原因的。它可以改变。当你说vc2.array = self.someArray时,这是对同一个可变数组的引用,而不是新副本。

要么使用.copy()来创建副本,要么只是使用常规的Swift数组(例如[Int]),这些数组是不可变的。

+0

我已经尝试过但没有工作。我有数组中的对象,我应该创建它们的副本吗?谢谢你的答案btw。 – Emre

+0

是的。即使使用Swift数组,如果元素是引用类型,您将获得浅度副本。请阅读[此博客文章](https://developer.apple.com/swift/blog/?id=10)以获取更多信息。 – jtbandes

+0

谢谢,看起来我有很多事情要做 – Emre