首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITextChecker:学习数千个单词的记忆问题

UITextChecker:学习数千个单词的记忆问题
EN

Stack Overflow用户
提问于 2013-02-07 16:47:41
回答 2查看 391关注 0票数 5

我正在尝试解析一个医学词典(.csv文件),然后通过UITextChecker:learnword方法学习所有这些单词,以便拼写检查器将这些医学术语批准为有效单词。

我在另一个线程中调用此方法,但csv文件中的字数约为50K。

代码语言:javascript
复制
- (void)parseMyCSVFile{

for (int i = 1; i < [csvContent count]; i++) {
    NSString *learntWord = [NSString stringWithFormat:@"%@",[csvContent objectAtIndex:i]];

    NSString *s = learntWord;
    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@" ()\n\""];
    s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];


    if ([UITextChecker hasLearnedWord:s]){

        NSLog(@"skipped");

    }
    else
    {
        [UITextChecker learnWord:s]; // Memory Issue Here
        NSLog(@"learning");
    }

    HUD.detailsLabelText = [NSString stringWithFormat:@"%i of %i",i,[csvContent count]];
}

[self performSelectorOnMainThread:@selector(bgWorkEnded) withObject:nil waitUntilDone:YES];

}

我应用了Instruments Time Profiler,发现问题出在我在循环中学习word的那一行。

这个应用程序试图加载字典直到5000个单词(大约),然后崩溃。

任何帮助都将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-06-19 14:40:40

您不能在后台线程上调用UIKit类方法--此导致崩溃。此外,您必须在您的方法内创建一个自动释放池,这样您就不会泄漏任何对象。由于UITextChecker必须在主线程上使用,我建议您一次只添加几个单词,然后返回run循环,这样您就不会使应用程序停滞。在这个过程中向用户显示一个微调器,以便他们知道它在做什么。

票数 1
EN

Stack Overflow用户

发布于 2013-06-19 15:18:57

只需更改i= 0的值。这会对你有帮助。例如:

代码语言:javascript
复制
for (i=0; i<[csvContent count]; i++)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14746992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档