Ich versuche, ein medizinisches Wörterbuch (.csv-Datei) zu parsen und dann alle diese Wörter durch die UITextChecker
: learnword Methode zu lernen, so dass die Rechtschreibprüfung diese medizinischen Begriffe als gültige Wörter genehmigt.UITextChecker: Speicherproblem mit dem Lernen von Tausenden von Wörtern
Ich rufe diese Methode in einem anderen Thread, aber die Anzahl der Wörter in der CSV-Datei ist um 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];
}
Ich habe Instrumente Zeit Profiler angewandt und fand heraus, dass das Problem in der Linie liegt, wo ich Wort innerhalb der Schleife am Lernen.
Die App versucht, das Wörterbuch bis zu 5000 Wörter (ca.) zu laden und stürzt dann ab.
Jede Hilfe wäre willkommen.
Dank
Sie sind auf jeden Fall betonen UITextChecker Prüfung in einer Weise QA Gruppe von Apple wahrscheinlich nie erwartet. Sie verwenden 1) es in einem Hintergrund-Thread anstelle des Haupt-Threads (UI) und 2) versuchen Sie, Tausende von Wörtern gleichzeitig hinzuzufügen. Wenn Sie keine angemessene Antwort von jemand anderem erhalten, würde ich empfehlen, so viel Code wie möglich zu veröffentlichen (was das Problem demonstriert) und einen Fehler bei [http://bugreporter.apple.com] (http: // bugreporter.apple.com) zu melden : //bugreporter.apple.com) senden sie diesen Code, um es selbst auszuprobieren. –
Verwenden Sie einen @autoreleasepool –
Sie erstellen 2 NSStrings und ein NSCharacterSet für jede Iteration. Profiliere deine App, um zu sehen, ob das wichtig ist. – jcm