作为iOS的新手,我发现ARC到目前为止真正有助于快速发展。话虽如此,有一些警告我不确定ARC是如何适应的,以及之前的长期iOS模式,如MVC。这就是我试图描绘事物的方式,我的理解中的任何澄清或更正都将受到高度赞赏。
我正在使用Storyboard为我的应用实例化和设置一些视图控制器。从我读过的文档中,当活动视图控制器分割到不同的视图控制器时,发送视图控制器实例变量丢失(是吗?/否?)。因此,我正在使用模型层来存储应用程序的数据。现在,我的理解开始变得更加模糊......
假设我只有一个视图控制器正在使用模型数据对象。我在视图控制器中(在viewDidLoad中)分配和实例化数据对象。所以现在我从我的控制器中引用了数据对象,当控制器在前台时,可以自由地协调来自视图,控制器,可能是数据对象的信息,返回控制器以使用MVC模式。好的,很酷..
但是当我转向不同的视图控制器时,发送方控制器的实例变量将丢失,因此对数据对象的唯一引用将丢失。 ARC是否会自动释放数据对象?
我的目标是能够保存特定视图控制器的数据,这样当我返回它时,我可以用保存的状态更新它。如何在iOS中使用MVC和ARC完成这项工作?我想到的选项(记住,我是新的哈哈)
任何建议都会受到高度赞赏。谢谢你的时间。
答案 0 :(得分:2)
如果您正在使用push或modal segue,则前一个视图的视图控制器不已释放。如果您收到didReceiveMemoryWarning
,则视图本身可能会被释放,但控制器不会。您的控制器的ivars将被保留,因此当辅助视图控制器弹出(或解除)时,您的原始ivars将与之前一样。