AppDelegate应该做多少?

时间:2010-05-19 00:42:34

标签: iphone uiapplicationdelegate uiprogressbar

我正在设计相当大的应用程序,并且在启动时它将使用几个不同的服务器创建会话。因为他们正在创建一个在应用程序的所有部分中使用的会话,所以我认为它最适合App Delegate。

但问题是我需要在屏幕上显示会话进度。我计划在主菜单的底部有一个UIToolBar,我不想用进度条覆盖它,但覆盖它上方的UIView。所以我看到它的方式我可以用几种不同的方式来做。

1)让App Delegate建立会话并将进度报告给主菜单类,以便它可以在进度条中表示它(如果在单独的线程中创建会话,我会遇到任何问题吗?),

2)让App委托显示主菜单(带有一堆按钮和UIToolBar的UIView)并让它跟踪并显示进度(我从未在App Delegate中显示任何内容但是假设你可以这样做但不是推荐)或

3)让App Delegate只需按下主菜单,让mainMenu类创建会话并显示进度条。

4)我认为另一种方法是在委托类中创建会话并将委托设置为mainMenu而不是self(AppDelegate),尽管我从未使用过其他任何东西,所以不确定是否这将工作或如果我能够关闭线程(通过调用超级可能?)作为其在AppDelegate而不是类的委托中运行。

正如我之前所说,在一个单独的线程中创建会话之前,所以它不会锁定UI,我认为最好的方法是第一个但是我会遇到问题让它在一个单独的运行中运行线程,报告回应用程序委托,然后将该消息发送到mainMenu视图?

我希望一切都有道理,如果您需要进一步澄清,请告诉我。感谢任何信息

干杯,

1 个答案:

答案 0 :(得分:1)

大概连接状态会影响您应用的功能。我可能会想到一个连接管理器对象,它能够在查询状态时启动连接,维护状态并做出响应。与单例对象将返回现有对象或创建并返回一个无对象的新对象的方式相同,连接管理器甚至不需要“make connection”方法,只需要“获取句柄” - 如果连接不是打开它可以尝试这样做。

您还要提到必须在主屏幕上报告状态。拥有一个管理器对象,该对象能够在后台执行不确定时间的任务(打开与主机的连接,可能已准备就绪,忙碌,远离或者只是简单地断开),然后将进度报告给主线程,以便UI可以是更新(记住,在辅助线程中没有UIKit访问权限)似乎是理想的,它也使您的视图也不同。