NSLinguisticTagger Memory Fuga

He estado jugueteando en Xcode 4.2 con el nuevo NSLinguisticTagger de iOS 5.0. Mi objective con esta function es tomar un logging de la libreta de direcciones y luego escupir un nombre compuesto como un NSString, algo así como lo que hace ABRecordCopyCompositeName, pero teniendo en count el order de nombres para los idiomas de Asia oriental y húngaro (el último primero en vez del primero ) Esta es la function:

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; } 

Los instrumentos me dicen que estoy perdiendo entre 16 y 32 bytes con cada iteración de esta function, en el EnumerateLinguisticTagger (y no en la parte de los bloques, aparentemente). Dado que los resources en línea para NSLinguisticTagger están limitados a su reference de class y a un solo tutorial, no tengo ni idea de dónde y cómo comenzar a search la fuga.

¿Ayuda por favor?

Yo tuve el mismo problema. En mi caso, se produjeron pérdidas cuando la cadena tiene saltos de línea (\ n o \ r).