2012-11-20 64 views
1

我是初學iOS開發人員,我正在嘗試構建CRM系統以瞭解開發的不同方面。iOS中數據庫連接的首選方式

我有關於連接到外部SQL服務器的首選方式的問題。順便說一下,我使用Karl Krafts的Obj-C MySQL Connector。 現在我在我的應用程序委託(didFinishLaunchingWithOptions)中初始化數據庫控制器(它依次創建,然後創建,然後空閒與服務器的連接)對象,並且這給我一些不需要的副作用。屏幕長時間黑屏在啓動時,如果與數據庫的連接速度很慢,並且有時該應用程序「太快」,並且查詢在連接完全建立之前嘗試執行 - 導致拋出異常。

我想要的行爲(猜測是首選)是GUI首先加載,然後在後臺線程中建立DB控制器和連接的初始化 - 在數據已獲取時更新GUI 。

我該怎麼做到這一點?我嘗試了很多不同的方法,我在研究中遇到過dispatch_queues,並直接從viewDidLoad等中啓動它,但沒有給出所需的「GUI然後數據」 - 效果。

此外,在程序會話過程中是否有空閒連接 - 或每個查詢應該「連接 - 做它的事情 - 斷開連接」?

的問候,克里斯托弗

回答

2

戒律一:不要做在主線程聯網 - 這是預留給UI。否則你的應用程序將有一個滯後和凍結的用戶界面。第二條:不是大量的順序同步調用,而是使用異步調用(GCD,後臺線程等),事件和回調。可可(Touch)的設計考慮到了這一點,所以很容易做到。第三步:如果你自動啓動一些東西,讓它在應用程序完全準備就緒時啓動。讓調用Web服務成爲application:didFinishLaunchingWithOptions:中的最後一個。更好的是,讓用戶有可能通過用戶操作啓動登錄,即通過按「登錄」按鈕。誡命四:再讀第一三誡,記住它們。練習它們直到你熟悉它們。

+0

+1如果你想寫一個完整的iOS開發10的一般,它可能是一個很好的資源鏈接到。 「The Cocoa Commandments」 –

+0

@NSPostWhenIdle謝謝!好主意。也許我會這樣做,總有新手會喜歡它。 – 2012-11-20 18:17:28

+0

說實話,我也會很感激。對於語言的一些不那麼直觀的方面來說,擁有一站式資源來遵循良好的指導方針可能是非常有益的。 –