2

作为 iOS 的新手,我发现 ARC 迄今为止确实有助于快速开发。话虽如此,有一些警告我不确定 ARC 如何适合以前长期存在的 iOS 模式,例如 MVC。这是我试图描绘事物的方式,我将不胜感激任何澄清或更正我的理解。

我正在使用 Storyboard 为我的应用程序实例化和设置一些视图控制器。从我读过的文档中,当活动视图控制器转到不同的视图控制器时,发送视图控制器的实例变量会丢失(是吗?/否?)。因此,我使用模型层来存储应用程序的数据。现在在这里我的理解开始变得(更多)模糊..

假设我只有一个视图控制器正在使用模型数据对象。我从视图控制器(在 viewDidLoad 中)分配和实例化数据对象。所以现在我从我的控制器中引用了数据对象,当控制器在前台时,可以自由地协调从视图到控制器,可能到数据对象,再到控制器的信息,以使用更新视图MVC 模式。嗯不错..

但是当我转到不同的视图控制器时,发送者控制器的实例变量会丢失,因此对数据对象的唯一引用也会丢失。那么ARC是否也会自动释放数据对象?

我的目标是能够为特定的视图控制器保存数据,这样当我返回它时,我可以用保存的状态更新它。这是如何在 iOS 中使用 MVC 和 ARC 完成的?我想到的选项(记住,我是新人,哈哈)

  1. 在 Application Delegate 中包含对数据对象的引用。它不会去任何地方,所以对数据对象的引用也不会。这个好精确吗?
  2. 将所有数据以静态形式存储在数据类对象中?
  3. 使用 NSUserDefaults

任何建议将不胜感激。谢谢你的时间。

4

1 回答 1

2

例如,如果您使用的是 push 或 modal segue,则不会释放前一个视图的视图控制器。如果您收到一个didReceiveMemoryWarning,视图本身可能会被释放,但控制器不会。您的控制器的 ivars 将被保留,因此当辅助视图控制器弹出(或关闭)时,您的原始 ivars 将与以前一样。

于 2012-06-21T12:04:39.697 回答