簡體   English   中英

帶有FMDB的iOS SQLite在僅通過TestFlight分發自組織構建時,始終報告“內存不足”錯誤

[英]iOS SQLite with FMDB keeps reporting 'out of memory' error while distributing adhoc build via TestFlight only

我正在使用FMDB在我最新的iOS項目(支持iOS SDK 7.0及更高版本)上使用SQLite。 在開發過程中,一切都像魅力一樣運作,我喜歡這個包裝器。 我已經在模擬器上進行了測試,並直接構建到設備上(我的設備是iPhone 5C和iPad mini 2),沒有發生任何問題。

但是,當我通過TestFlight向測試人員分發臨時版本(使用開發人員證書和配置)時,情況就變糟了。 他們可以成功下載並安裝我的應用程序,但是當它啟動時,屏幕上會彈出“內存不足”錯誤。

我檢查了其他一些SO問題,並確保每個FMResultSet *在使用后FMResultSet *關閉。 但是,當我使用iTools探索應用程序的目錄結構時,令人驚訝的是未創建任何數據庫文件,這意味着FMDB無法打開SQLite數據庫文件並拋出誤導性的“內存不足”錯誤。 因此,我嘗試了創建數據庫文件的操作:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appBundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString *dbPath = [paths[0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite", appBundleName]];
_database = [FMDatabase databaseWithPath:dbPath];

<-在應用程序的Documents文件夾內創建foo-bar.sqlite的方式

NSString *appBundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
_database = [FMDatabase databaseWithPath:[NSString stringWithFormat:@"/tmp/%@.sqlite", appBundleName]];

<-在tmp文件夾中創建foo-bar.sqlite的內容

_database = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]];

< -FMDB教程到底顯示了什么

但是沒有小氣。 .sqlite / .db文件仍未創建。

有人曾經遇到過這個問題,或者有什么建議可以幫助我擺脫困境?

提前致謝。

我相信您也在github倉庫上也提到了這一點-但基本的答案是:使用FMDatabaseQueue。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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