Tôi đang cố gắng phân tích từ điển y khoa (tệp .csv) và sau đó tìm hiểu tất cả các từ đó thông qua phương pháp từ khóa để kiểm tra chính tả chấp nhận các thuật ngữ y tế đó là từ hợp lệ.UITextChecker: Vấn đề bộ nhớ khi học hàng ngàn từ
Tôi đang gọi phương thức này trong một chuỗi khác nhưng số lượng từ trong tệp csv là khoảng 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];
}
Tôi đã áp dụng Công cụ định thời gian và phát hiện ra rằng vấn đề nằm trong dòng mà tôi đang học từ bên trong vòng lặp.
Ứng dụng cố gắng tải từ điển cho đến 5000 từ (xấp xỉ) và sau đó gặp sự cố.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn
Bạn chắc chắn kiểm tra căng thẳng UITextChecker theo cách nhóm QA của Apple có thể không bao giờ mong đợi. Bạn đang 1) sử dụng nó trong một chủ đề nền thay vì chủ đề chính (UI) và 2) bạn đang cố gắng thêm hàng ngàn từ cùng một lúc. Nếu bạn không nhận được phản hồi tốt từ người khác, tôi khuyên bạn nên đóng gói nhiều mã như bạn có thể tiết lộ (thể hiện vấn đề này) và gửi một lỗi tại [http://bugreporter.apple.com] (http : //bugreporter.apple.com) gửi cho họ mã đó để tự mình dùng thử. –
Sử dụng @autoreleasepool –
Bạn đang tạo 2 NSStrings và một NSCharacterSet cho mỗi lần lặp lại. Hồ sơ ứng dụng của bạn để xem liệu đó có phải là đáng kể hay không. – jcm