У меня проблемы с fmdb на iphone 3g с прошивкой: 4.2.1 (8C148).
У меня есть большой NSMutableArray, который содержит команды sql (загруженные из базы данных). Я заполняю NSMutableArray через NSAutoreleasePool (часть освобождения памяти для iphone 3g) и получаю массив размером 40+ МБ.
Затем я использую следующие команды:
[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 Мб памяти. Iphone 3g не может справиться с этим, и он терпит неудачу с предупреждениями уровня 1 и, наконец, завершается.
Я попробовал его на iphone 3GS, и он отлично работает.
У кого-нибудь есть идеи, как это пропустить? Я не могу использовать основные данные (хотя это отличное решение), потому что у меня уже есть большая база данных, предварительно сделанная в комплекте с приложением.