On 04/13/09 07:56, "Christiaan Hofman" <[email protected]> wrote:
> Nice. I expect this is not very efficient, so would it make sense to
> do this:
>
> - (NSString *)lossyASCIIString{
> NSData *asciiData = [[ms dataUsingEncoding:NSASCIIStringEncoding]
> retain];
> if (asciiData == nil) {
> NSMutableString *ms = [self mutableCopyWithZone:[self zone]];
> // do as much transliteration as possible, then strip all
> combining marks; works with ideographs as well
> CFStringTransform((CFMutableStringRef)ms, NULL,
> kCFStringTransformToLatin, FALSE);
> CFStringTransform((CFMutableStringRef)ms, NULL,
> kCFStringTransformStripCombiningMarks, FALSE);
> // final step to guarantee ASCII
> asciiData = [ms dataUsingEncoding:NSASCIIStringEncoding
> allowLossyConversion:YES];
> }
> NSString *ret = [[[NSString alloc] initWithData:asciiData
> encoding:NSASCIIStringEncoding] autorelease];
> [ms release];
> return ret;
> }
I'd profile it before trying to optimize. AFAIK it is only used for citekey
generation, which isn't really a hot code path anyway. I'd expect that
checking rangeOfCharacterFromSet: for a non-ASCII set might be worthwhile.
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Bibdesk-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-develop