1

私は初心者の iOS 開発者であり、開発のさまざまな側面を学ぶために CRM システムを構築しようとしています。

外部 SQL サーバーに接続するための推奨される方法について質問があります。ちなみに、Karl Krafts の Obj-C MySQL Connector を使用しています。現在、アプリ デリゲート (didFinishLaunchingWithOptions) でデータベース コントローラー (サーバーへの接続を作成してからアイドル状態にする) オブジェクトを初期化すると、不要な副作用が発生します。 DB への接続が遅く、アプリが「速すぎる」場合に起動し、接続が完全に確立される前にクエリを実行しようとすると、例外がスローされます。

私が望んでいる(そして推測が好ましい)動作は、GUIが最初にロードされ、次にDBコントローラーの初期化と接続がバックグラウンドスレッドで確立され、データが取得されたときにGUIを更新することです。

どうすればこれを達成できますか?私の研究で出くわしたさまざまな方法、dispatch_queues、およびviewDidLoadなどから直接それを開始しようとしましたが、望ましい「GUI、次にデータ」効果を与えるものはありません。

また、プログラムのセッション中にアイドリング接続を使用することをお勧めしますか?それとも、それぞれのクエリで「接続 - 処理を実行 - 切断」する必要がありますか?

よろしく、 クリストファー

4

1 に答える 1

2

戒め 1: メイン スレッドでネットワークを使用しないでください。これは UI 用に予約されています。そうしないと、アプリの UI が遅延してフリーズします。

戒め 2: 多数の順次同期呼び出しの代わりに、非同期呼び出し (GCD、バックグラウンド スレッドなど)、イベント、およびコールバックを使用します。Cocoa (Touch) はこれを念頭に置いて設計されているため、簡単に実行できます。

戒め 3: 何かを自動的に起動する場合は、アプリの準備が整ったときに起動させます。Web サービスへの呼び出しを の最後の呼び出しにしapplication:didFinishLaunchingWithOptions:ます。さらに良いことに、ユーザーは、ユーザー アクション (つまり、[ログイン] ボタンを押すこと) を介してログインを開始できるようにします。

戒め 4: 最初の 3 つの戒めをもう一度読み、心に留めておいてください。よくわかるまで練習してください。

于 2012-11-20T18:09:46.870 に答える