2

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

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

1) 让 App Delegate 建立会话并向主菜单类报告进度,以便它可以在进度栏中表示它(如果会话是在单独的线程中创建的,这样做会有什么问题吗?),

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

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

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

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

我希望一切都有意义,如果您需要任何进一步的澄清,请告诉我。任何信息表示赞赏

干杯,

4

1 回答 1

1

大概连接的状态会影响您的应用程序的功能。我可能会考虑一个连接管理器对象,它能够启动连接、维护它们的状态并在询问它们的状态时做出响应。就像单例对象将返回现有对象或创建并返回不存在的新对象一样,连接管理器甚至不需要“建立连接”方法,只需“获取句柄” - 如果连接不存在打开它可以尝试使其如此。

您还提到必须在主屏幕上报告状态。在后台拥有一个能够执行不确定时间任务的管理器对象(打开与可能已准备好、忙碌、遥远或完全断开的主机的连接),然后将进度报告给主线程,以便 UI 可以更新(请记住,辅助线程中没有 UIKit 访问)似乎很理想,它也使您的 View 与众不同。

于 2010-05-19T01:00:54.633 回答