[英]fmdb iphone 3g large array
我在固件版本為4.2.1(8C148)的iPhone 3g上通過fmdb遇到麻煩。 我有一個很大的NSMutableArray,其中包含sql命令(從數據庫下載)。 我通過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上嘗試過,效果很好。
有誰知道如何跳過嗎? 我無法使用核心數據(即使這是一個很好的解決方案),因為我已經將大型數據庫預先與應用程序捆綁在一起。
在兩次調用之間關閉數據庫
[db close];
為了確保釋放不再使用的內存。
大多數開發人員嘗試使數據庫連接保持盡可能長的打開時間。 但是,在iPhone上-由於內存限制最嚴格且IO速度很快-在大多數情況下,每次調用重復打開/關閉DB的速度更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.