我应该从哪个类运行异步调用?

时间:2014-09-30 12:44:52

标签: ios cocoa-touch nsurlconnection

在我的iOS应用程序中,我的一个视图上有一个视图控制器和一个UITableView子类。目前,UITableView管理它自己的数据(创建连接,并作为处理回调的委托)。

我想知道这是否是最佳做法?在视图控制器上运行它然后将数据传递到表中是否更好?这根本不重要吗?

除了回答我的问题外,请解释原因。

谢谢!

3 个答案:

答案 0 :(得分:2)

delegate中实施dataSourceViewController方法会更为标准。

除了自定义绘图之外,对UI*View类进行子类化是很不寻常的。 UITableViewCell对此规则有点例外。

如果您发现ViewController变得有点大,您可能会考虑在单独的类中实现委托和dataSource。

答案 1 :(得分:0)

除了mcfedr的答案之外,视图是与用户交互的东西,通常很好地分离概念(除非不可避免)。另请注意,历史版本的ios(iirc)视图控制器可以根据需要加载/卸载视图,因此其中的任何应用程序逻辑都可能不复存在。

答案 2 :(得分:0)

在这种情况下,我通常只有一个类...包含以下视图层次结构的UIViewController实例:

  • view - > myTableView

使用这种方法,我的UIViewController将:

  • 将IBOutlet添加到UITableView(myTableView)
  • 实施UITableViewDelegate的方法
  • 实施UITableViewDatasource的方法
  • 将myTableVIew.delegate设为自我
  • 将myTableView.datasource设置为self

当主机UIViewController是UIViewContoller的委托和数据源时,所有代码都可以存在于一个类中。这样可以使项目代码更紧密,但会紧紧结合您的逻辑。

另一种方法是继承UITableView并实现UITableViewDelegate和UITableViewDatasource。如果出现以下情况,这将是一种理想的方法:

  • 您想在多个UIViewController
  • 中重用UITableView
  • 您想要从UIViewController
  • 封装UITableView逻辑

以下是我使用的思考过程:

  • 我是否会重复使用这个UITableView及其逻辑?
    • 是 - > UIViewController类和UITableView子类
    • 否 - >仅限UIViewController类

最佳实践取决于所涉及的程序员数量,UITableView的可重复性,已建立的编码模式。这通常是一个偏好问题,我希望我的答案能说明为什么你会采取任何一种方式,