Утечка памяти NSLinguisticTagger
Я играл в Xcode 4.2 с новым NSLinguisticTagger от iOS 5.0. Моя цель с этой функцией – взять запись в адресной книге, а затем выплюнуть составное имя как NSString, похожее на то, что делает ABRecordCopyCompositeName, но с учетом порядка именования для восточноазиатских языков и венгерского (последнее первое, а не первое ). Вот функция:
NSString *text = [self getLocalizedFullNameOfRecord:[contacts objectAtIndex:indexPath.section]; - (NSString *) getLocalizedFullNameOfRecord:(ABRecordRef) person { NSString *firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty); NSString *middleName = ABRecordCopyValue(person, kABPersonMiddleNameProperty); NSString *lastName = ABRecordCopyValue(person, kABPersonLastNameProperty); NSString *prefix = ABRecordCopyValue(person, kABPersonPrefixProperty); NSString *suffix = ABRecordCopyValue(person, kABPersonSuffixProperty); NSString *fullName = @""; __block BOOL Asian; // Apologies to all Hungarians who aren't actually Asian __block NSArray *asianLanguages = [NSArray arrayWithObjects:@"zh-Hant", @"zh-Hans", @"ja", @"ko", @"hu", @"vi", nil]; [firstName enumerateLinguisticTagsInRange:NSMakeRange(0, firstName.length) scheme: NSLinguisticTagSchemeLanguage options: NSLinguisticTaggerOmitWhitespace orthography: nil usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop){ if ([asianLanguages containsObject:tag]) Asian = YES; else Asian = NO; }]; if(prefix) fullName = [fullName stringByAppendingFormat:@"%@ ", prefix]; if(Asian && lastName) fullName = [fullName stringByAppendingFormat:@"%@ ", lastName]; else if(firstName) fullName = [fullName stringByAppendingFormat:@"%@ ", firstName]; if(middleName) fullName = [fullName stringByAppendingFormat:@"%@ ", middleName]; if(Asian && firstName) fullName = [fullName stringByAppendingFormat:@"%@ ", firstName]; else if(lastName) fullName = [fullName stringByAppendingFormat:@"%@ ", lastName]; if(suffix) fullName = [fullName stringByAppendingFormat:@"%@", suffix]; [firstName release]; [middleName release]; [lastName release]; [prefix release]; [suffix release]; return fullName; }
Инструменты говорят мне, что я утечка от 16 до 32 байт с каждой итерацией этой функции, на enumerateLinguisticTagger (а не на части блоков, по-видимому). Поскольку онлайн-ресурсы для NSLinguisticTagger ограничены ссылкой на класс и одним учебным пособием, я понятия не имею, где и как начать поиск утечки.
Помоги пожалуйста?
- Что такое строка пользовательского агента iOS 5.0?
- Направление стрелочной стрелки не может быть определено
- Facebook API SDK 3.0 «Произошла ошибка с приложением»
- iOS, как делать предварительно заполненные основные данные?
- Fade Image to Transparent в iOS
- NSFetchedResultsChangeUpdate не вызывается при слиянии ManagedObjectContext
- Не работает проверка подлинности ShareKit + Facebook
- Путь навигации IOS ViewController - как программно перемещаться назад
- Как реализовать многоуровневый делегат в Objective-C
- Перезагрузка всех контроллеров представлений в контроллере панели вкладок
- Не удается скомпилировать соединение iOS5
- Масштабирование пейзажного изображения, снятого с камеры, чтобы использовать его в портрете
- Неправильное воспроизведение в MP Music Player Controller в ios 5
У меня такая же проблема. В моем случае возникли утечки, когда строка имеет разрывы строк (\ n или \ r).