iphone - 带有 ARC 的 MVC 模式

标签 iphone ios model-view-controller automatic-ref-counting

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

我正在使用 Storyboard 为我的应用程序实例化和设置一些 View Controller 。从我读过的文档来看,当事件 View Controller 转向不同的 View Controller 时,发送 View Controller 实例变量会丢失(是?/否?)。因此,我使用模型层来存储应用程序的数据。现在我的理解开始变得(更加)模糊......

假设我有一个模型数据对象,仅由一个 View Controller 使用。我从 View Controller 内(在 viewDidLoad 中)分配并实例化数据对象。因此,现在我从 Controller 内引用了数据对象,当 Controller 位于前台时,可以自由地将信息从 View 协调到 Controller ,可能到数据对象,再返回到 Controller ,以使用MVC 模式。好的,很酷..

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

我的目标是能够保存特定 View Controller 的数据,以便当我返回它时我可以使用保存的状态更新它。 iOS 中的 MVC 和 ARC 是如何实现这一点的?我想到的选项(记住,我是新人哈哈)

  1. 在应用程序委托(delegate)中包含对数据对象的引用。它不会去任何地方,因此对数据对象的引用也不会去任何地方。这个好精确吗?
  2. 将所有数据以静态形式存储在数据类对象中?
  3. 使用 NSUserDefaults

今后如有任何建议,我们将不胜感激。谢谢你的时间。

最佳答案

例如,如果您使用的是推送或模态转场,则前一个 View 的 View Controller 不会被释放。如果您收到 didReceiveMemoryWarning, View 本身可能会被释放,但 Controller 不会。您的 Controller 的 ivars 将被保留,因此当辅助 View Controller 弹出(或关闭)时,您的原始 ivars 将像以前一样。

关于iphone - 带有 ARC 的 MVC 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11137602/

相关文章:

iphone - 如何从Objective-C调用SQL存储过程?

ios - 注册APNS错误,NSCocoaErrorDomain代码= 3000

ios - 在 swift 3 中使用解析中的 AnyObject 类型和访问对象

javascript - Ember 路由或 Controller 将数据模型公开为 json

ios - 连接 Storyboard 和 outlet 在 xcode 5.1、ios 7.1 sdk 中不能正常工作?

iphone - 在 Cocoa/Cocoa Touch 应用程序中放置 "Core Data Stack"的位置

ios - 将模型对象的引用存储在其中表示的 UITableViewCell 中是否正确?

iphone - UITableView 中的错误(deleteSections :withRowAnimation: )?

cocoa - IBOutlet 未在 Cocoa MVC 项目中设置

php - 我什么时候应该在 mvc 中使用多个 Controller ?