1

我是一名初学者 iOS 开发人员,我正在尝试构建一个 CRM 系统来学习开发的不同方面。

我对连接到外部 SQL 服务器的首选方式有疑问。顺便说一句,我正在使用 Karl Krafts 的 Obj-C MySQL 连接器。现在我在我的应用程序委托(didFinishLaunchingWithOptions)中初始化了数据库控制器(它反过来创建,然后空闲到服务器的连接)对象,这给了我一些不需要的副作用。屏幕很长一段时间都是黑色的如果与数据库的连接速度很慢,则启动,有时应用程序“太快”并且查询在连接完全建立之前尝试执行 - 导致抛出异常。

我想要的行为(并且猜测是首选)是首先加载 GUI,然后在后台线程中建立 DB 控制器和连接的初始化 - 在获取数据后更新 GUI。

我将如何实现这一目标?我已经尝试了许多不同的方法,我在我的研究中遇到过,dispatch_queues 并直接从 viewDidLoad 等中初始化它,但是没有一个给我想要的“GUI 然后数据”效果。

此外,在程序会话期间最好有一个空闲连接 - 还是每个查询都应该“连接 - 做它的事情 - 断开连接”?

问候,克里斯托弗

4

1 回答 1

2

戒律一:不要在主线程上做网络——它是为 UI 保留的。否则,您的应用程序将有一个滞后和冻结的 UI。

戒律二:不要使用大量的顺序同步调用,而是使用异步调用(GCD、后台线程等)、事件和回调。Cocoa (Touch) 的设计考虑到了这一点,所以很容易做到。

戒律三:如果你自动启动某些东西,让它在应用程序完全准备好时启动。让对 Web 服务的调用成为application:didFinishLaunchingWithOptions:. 更好的是,让用户有可能通过用户操作启动登录,即按下“登录”按钮。

诫命四:再次阅读前三诫并牢记在心。练习它们,直到你熟悉它们。

于 2012-11-20T18:09:46.870 回答