使用Objective-C时,我只需将NSMutableArray
中的一个属性指定为
VC_B.list = self.list
自我是
VC_A
当视图控制器被弹出导航堆栈时,它允许在列表中的
VC_B
中完成的更改可以在VC_B
的列表中看到。但是在Swift中,由于数组是按值传递的,因此如上所述的分配不起作用,所以我被困在如何解决这个问题上。现在处理此问题的正确方法是什么?
最佳答案
您仍然可以像以前一样在Swift中通过将属性设置为NSMutableArray
来执行此操作。如果您要求,基金会类型仍然存在。但这对于ObjC和Swift都是不好的设计。它会在远处(当事物神奇地更改了不属于调用的值时)产生了怪异的动作,并有可能破坏MVC(如果数据是持久性的,则它应该存在于模型中,而不是在视图控制器中)。
Cocoa中有两种常见的模式:将数据存储在模型中,或通过委派传递。
如果此数组表示某种持久状态(例如系统中的项目列表),则该数组属于模型层,并且两个视图控制器都应在其中读取和操作它,而不是通过相互通信来进行。 (请参阅Model-View-Controller。)
如果此数组是临时数据(例如从列表中选择),则调用VC应该将自己设置为接收VC的委托,并且当接收VC完成时,它将数据传递回其委托。 (请参阅Delegates and Data Sources。)
关于ios - 快速通过 View Controller 之间的引用传递数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32049202/