1

我试图找出在我的应用程序中实现 MVC 设计的最佳方法。现在,当用户进入 UITableViewController 时,我向我的模型发送请求以访问互联网并下载一些数据。当数据返回时,我希望它更新数据,即使我的 UITableViewController 被释放(通过用户关闭视图或退出视图)。所以目前我更新模型,然后在模型上有一个委托来在 UITableViewController 上“更新 UI”。基本上在数据返回后,我希望模型调用 [tableView reloadData] 并通过委托实现此目的。

我的问题:

  1. 这一定是正确的方法吗?我的模型还有其他方法可以调用 UIViewController 上的方法吗?

  2. 如果我希望在更改模型时通知多个 ViewController 怎么办……例如,如果我退出 UITableViewController1 然后导航到 UITableViewController2 并使用相同的模型/数据怎么办。我应该在我的模型上创建多个代表吗?

只是在寻找一些最佳实践,并想知道我是否正确地这样做了。

提前致谢。

4

2 回答 2

1

您可以使用NSNotification来提醒监听器更改,或者使用键值观察(KVO)。两者都是观察者模式的风格,它将帮助您消除模型与视图的耦合,并且作为奖励,允许任意数量的观察者找出模型的变化,而无需单独告诉他们。

有自动和手动更改通知。 这解释了差异

我打赌你会做手动通知,所以你会这样做:

[self willChangeValueForKey:@"something"];
... // update 'something' here
[self didChangeValueForKey:@"something"];

观察者会收到通知。自动方法需要使用您可能不会在内部使用的属性方法。通常 KVO 适用于模型的单个属性,当然模型内可能有很多发送通知。如果你正在做更多“我刚刚完成流程 X”的事情,它可能更像是一个 NSNotification。

于 2012-05-23T15:37:44.477 回答
0

回答问题 2 - 如果您有一些对象,应该通知某些事件,您应该使用 NSNotifications(观察者模式)。这可以帮助您以简单的方式使这些对象做出反应、更新它们的视图等

于 2012-05-23T15:34:40.417 回答