簡體   English   中英

將字典加載到應用程序中的最佳方法? iOS版

[英]Best way to load a Dictionary into an Application? iOS

我創建了一個涉及使用字典的游戲。 它有大約73000個單詞。 但是,經過審核后,該應用被拒絕了。 這是評論意見:

“”我們發現您的應用程序在運行iOS 6.1.3的iPad上崩潰了。“”點擊播放按鈕時,應用程序崩潰了。 “如果您的應用使用了過多的內存,則可能會遇到此問題。”

我感到難過。 運行6.1.3的iPhone或運行6.1.3的iPad上的應用程序沒有問題。 因此,我假設它在iPad mini上崩潰了。 有沒有更有效的方式/更好的地方將字典加載到內存中? 這是我目前在按下“播放”按鈕后執行的操作。 提前致謝!

    NSString *filePath = [[NSBundle mainBundle] pathForResource: [NSString stringWithFormat: @"dictionary"] ofType:@"txt"]; //set where to get the dictionary from
    NSData* data = [NSData dataWithContentsOfFile:filePath]; //pull the content from the file into memory
    NSString* string = [[[NSString alloc] initWithBytes:[data bytes]
                                                 length:[data length] 
                                               encoding:NSUTF8StringEncoding] autorelease];//convert the bytes from the file into a string
    NSString* delimiter = @"\n";//split the string around newline characters to create an array
    currentDict = [string componentsSeparatedByString:delimiter];
    [currentDict retain];

在我看來,似乎73,000個單詞不會給記憶帶來壓力,這可能完全是另外一回事。 運行儀器,使用分配工具監視內存中發生的情況。 確定這本詞典是否真的有誤。

就是說,由於多種原因,您使用的策略並不理想(包括您建議的策略)。 與當前的方法相比,您可以使用多種替代方法來使您在任何給定的時間都能找到所需的字典部分,據我所知,這些方法一直都完全駐留在內存中。

一個簡單的解決方案可能是轉換為NSDictionary並從文件中加載它。 另一個更復雜但更有效的解決方案是推出預先填充的CoreData數據庫(例如,如果您窺探github,則有許多現有解決方案)。

這似乎是一種極其緩慢且占用大量內存的方式來存儲70k個字。

我建議將整個字典存儲在一個小的預加載的SQLite數據庫或至少一個二進制plist文件中-盡管您可以在不將所有內容都存儲在內存中的情況下運行搜索,但數據庫確實是一個更好的選擇。

暫無
暫無

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

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