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

Reply via email to