UITextChecker
医学辞書 (.csv ファイル) を解析し、 :learnword メソッドを使用してこれらすべての単語を学習して、スペルチェッカーがそれらの医学用語を有効な単語として承認しようとしています。
別のスレッドでこのメソッドを呼び出していますが、csv ファイルの単語数は約 50K です。
- (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 を適用したところ、ループ内で単語を学習している行に問題があることがわかりました。
アプリは 5000 語 (約) になるまで辞書を読み込もうとし、その後クラッシュします。
どんな助けでも大歓迎です。
ありがとう