簡體   English   中英

fmdb iphone 3g大陣列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM