Bir tıbbi sözlüğü (.csv dosyası) ayrıştırmaya çalışıyorum ve daha sonra bu sözcükleri UITextChecker
aracılığıyla öğrenmelisiniz: bu sözcük, yazım denetimcinin bu tıbbi terimleri geçerli kelimeler olarak onaylaması için.UITextChecker: Kelime Binlerce Öğrenme ile Bellek Sorunu
Bu yöntemi başka bir iş parçacığında arıyorum, ancak csv dosyasındaki sözcük miktarı yaklaşık 50 K'dir.
- (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];
}
Ben Aletleri Zaman Profiler uygulanan ve problem ben döngü içinde kelime öğreniyorum doğrultusunda vereceğine işaret bulduk.
Uygulama, sözlüğü 5000 sözcük (yaklaşık) olana kadar yüklemeye ve sonra çöker.
Herhangi bir yardım için teşekkür ederiz.
Teşekkür
Kesinlikle Apple'ın QA grubunun hiçbir şekilde beklenmediği şekillerde UITextChecker'ı test ediyorsunuz. 1) Ana (UI) dizisi yerine arka plan iş parçacığı kullanarak ve 2) bir seferde binlerce sözcük eklemeye çalışıyorsunuz. Başka birinden iyi bir yanıt alamıyorsanız, açıklayabildiğiniz kadar çok kodu (sorunu gösterir) paketlemenizi ve [http://bugreporter.apple.com] adresindeki bir hatayı dosyalamanızı öneririz. : //bugreporter.apple.com) kendilerine denemek için bu kodu göndererek. –
Bir @autoreleasepool kullanın –
Her yineleme için 2 NSStrings ve bir NSCharacterSet oluşturuyorsunuz. Önemli olup olmadığını görmek için uygulamanızı profilleyin. – jcm