2016-01-08 136 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