私のアプリケーションにこの奇妙なバグがしばらくありました。おそらくあなたが私を助けることができます。画像(多くの)アプリケーションのダウンロードiPhoneとSQLite - データベース接続が失われましたか?
をし、ライブラリ/キャッシュディレクトリに格納します:ここで
が与えられています。
ダウンロードしたすべての画像について、URLとファイル名はSQLiteデータベースに保存されます。ご覧のとおり、私はホイールを再発明し、自分の "キャッシング"システムを作成しました。私は多くの画像をダウンロードする必要があるときにアプリケーションのメモリ占有量を減らすためにこれを行っています。
私は、いくつかのテキストデータとダウンロードした画像の一部をセルに表示するUITableViewControllerを持っています。
- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath
クエリの形式は以下のとおりです:ここ
SELECT filename, imageTitle, etcetera
FROM tbl_images
WHERE url = 'http://www.foo.com/bar'
は問題が来る:
までスクロールしたとき、またはファイル名は毎回、以下が呼び出されたデータベースから照会されテーブルビュー上で非常に速くダウンするため、短時間で多くのクエリが実行され、アプリケーションが「中断」してクエリが空の行を返し、再起動しない限り正しく動作しません。私はデータベースの接続が何とか失われていると推測していますが、実際にはわかりません。
誰がどのようなことが起こっているか、どのように修正するかについて考えていますか?
EDIT
OKみんな、私は、バグの原因を発見しました。再現すると、データベースが何らかの形で壊れていることがわかりました。
コメントありがとうございました。ご迷惑をおかけして申し訳ありません。 v^_^'
ここで返される値の確認であります(!sqlite3_prepare_v2(m_database、 クエリ、 -1、 &initStatement、 NULL)= SQLITE_OK) { の#ifdef DATAXML_DEBUG NS場合 ' :* sqlite3_prepare_v2 *により、ログ(@ "エラー:メッセージ%sのステートメントを準備できませんでした。"、 sqlite3_errmsg(m_database)); #endif [m_databaseLock unlock]; return nil; } ' –
私が見ることができるように、あなたは要求をする度にステートメントをコンパイルします。それは本当に悪い考えです。それを一度だけコンパイルし、要求が完了したらsqlite3_resetとsqlite3_clear_bindingsを実行して、他の要求との連携を準備します。 –