我在使用固件为 4.2.1 (8C148) 的 iphone 3g 时遇到了 fmdb 问题。我有一个包含 sql 命令(从数据库下载)的大型 NSMutableArray。我通过 NSAutoreleasePool 填充 NSMutableArray(为 iphone 3g 释放一些内存的一部分),我得到了一个 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 上试过,效果很好。
有谁知道如何跳过它?我不能使用核心数据(尽管它是一个很好的解决方案),因为我已经有一个与应用程序捆绑在一起的大型数据库。