iPhone应用程序架构

iPhone应用程序架构,iphone,architecture,uiviewcontroller,network-programming,Iphone,Architecture,Uiviewcontroller,Network Programming,考虑到良好的设计,是让每个视图控制器管理自己的连接/联网/加载,还是将其集中在应用程序委托中,还是单独的对象中更好 背景: 我有一个多选项卡应用程序,每个都有一个导航控制器,下面有一些视图控制器。每个视图控制器都在网络上加载XML和图像。目前,我有一个it设置,它调用应用程序委托以异步获取xml,对其进行处理,然后回调俯视图控制器以显示信息,然后启动一个单独的进程,将图像加载到数组中,并在加载每个图像时发送回调 从体系结构的角度来看,在每个视图控制器中都有更多的网络代码,还是回拨应用程序代理更好

考虑到良好的设计,是让每个视图控制器管理自己的连接/联网/加载,还是将其集中在应用程序委托中,还是单独的对象中更好

背景:

我有一个多选项卡应用程序,每个都有一个导航控制器,下面有一些视图控制器。每个视图控制器都在网络上加载XML和图像。目前,我有一个it设置,它调用应用程序委托以异步获取xml,对其进行处理,然后回调俯视图控制器以显示信息,然后启动一个单独的进程,将图像加载到数组中,并在加载每个图像时发送回调

从体系结构的角度来看,在每个视图控制器中都有更多的网络代码,还是回拨应用程序代理更好

想法/意见


TIA。

当我遇到这样的情况时,我倾向于创建一个对象,为我处理所有的网络事务。这样我就可以编写如下代码:

[netObj getXML:somePlace];

我喜欢这种方法的主要原因是它保持了代码库的整洁,并最大限度地减少了重复的代码。

我认为在每个视图控制器中使用这种方法会更有意义。你现在设置它的方式听起来有点奇怪-你必须使用委派,这样应用程序委派才能与每个视图控制器对话,或者你的应用程序委派中有大量对视图控制器的引用,而你可能不需要这些引用。我会想象你的应用程序委托是杂乱无章的,我很好奇你是如何处理这样的事情的:如果用户决定在与某个视图相关的XML被发送回你的应用程序并解析之前停止查看该视图

如果您担心视图控制器中存在代码重复,您可能可以通过使用类别来缓解这种情况


最后,我认为域对象处理这个问题可能是最好的,而不是视图控制器。例如,在ViewWillExample中,您获取或创建域对象的实例,并启动一个getData方法,该方法将视图控制器作为委托。所有请求/解析都在域对象中完成,完成后,它会向视图控制器发送getDataDidFinish消息或类似消息。

我一直在做的是将大部分网络调用放在应用程序委托中,当xml解析器返回时,它会检查哪个视图是顶部视图控制器,然后调用那个上的重载表。但这种方法的问题是,app委托中的代码太多了。我选择将所有的网络重构成一个新的单体。它简化了一点应用程序委托,但没有我想要的那么多。