NSURLConnection MVC 最佳实践



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

我的问题:

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

  2. 如果我希望在该模型更改时通知多个视图控制器怎么办......例如,如果我退出UITableViewController1,然后导航到UITableViewController2并使用相同的模型/数据,该怎么办? 我应该在我的模型上创建多个委托吗?

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

提前谢谢。

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

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

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

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

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

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

最新更新