ファームウェア 4.2.1 (8C148) の iphone 3g で fmdb に問題があります。SQL コマンド (データベースからダウンロード) を含む大きな NSMutableArray があります。NSAutoreleasePool (iphone 3g のメモリ解放の一部) を介して NSMutableArray にデータを入力すると、40 MB 以上の配列が得られます。
次に、次のコマンドを使用します。
[db beginTransaction];
for (NSString* sql in updateSQL)
{
if (sql!=@"") {
BOOL fmtest = [db executeUpdate:sql];
if (!fmtest) {
NSLog(@"Sql FAIL: %@",sql);
}
if ([db hadError]) {
NSLog(@"Err %d: %@", [db lastErrorCode], [db lastErrorMessage]);
}
}
// fetches--; // Counter of total updates;
}
[db commit];
更新プロセス中に、40/50 Mb のメモリが割り当てられます。Iphone 3g はそれを処理できず、レベル 1 の警告で惨めに失敗し、最終的に終了します。
iPhone 3GS で試してみましたが、問題なく動作します。
誰もそれをスキップする方法について何か考えがありますか? アプリにバンドルされた大規模なデータベースが既に作成されているため、コアデータを使用できません (これは優れたソリューションですが)。