NSCharacterSet (BSNewLineCharacterSet)
Language: Objective-C, Author: Found on cocoa-dev ML
License: Public domain
This is a simple category of NSCharacterSet which adds a commodity method to create a set composed only of the newline character.
NSCharacterSet (BSNewLineCharacterSet) source preview
#import "NSCharacterSet+BSNewLineCharacterSet.h" @implementation NSCharacterSet (BSNewLineCharacterSet) + (NSCharacterSet *)newlineCharacterSet; { static NSCharacterSet *newlineCharacterSet = nil; if (nil == newlineCharacterSet) { // This will be a character set with all newline characters (including the weird Unicode ones) CFMutableCharacterSetRef newlineCFCharacterSet = NULL; // get all whitespace characters (does not include newlines) newlineCFCharacterSet = CFCharacterSetCreateMutableCopy(CFAllocatorGetDefault(), CFCharacterSetGetPredefined(kCFCharacterSetWhitespace)); // invert the whitespace-only set to get all non-whitespace chars (the inverted set will include newlines) CFCharacterSetInvert(newlineCFCharacterSet); // now get only the characters that are common to kCFCharacterSetWhitespaceAndNewline and our non-whitespace set CFCharacterSetIntersect(newlineCFCharacterSet, CFCharacterSetGetPredefined(kCFCharacterSetWhitespaceAndNewline)); newlineCharacterSet = [(id)newlineCFCharacterSet copy]; CFRelease(newlineCFCharacterSet); } return newlineCharacterSet; } @end
NSCharacterSet (BSNewLineCharacterSet) header preview
#import <Cocoa/Cocoa.h> @interface NSCharacterSet (BSNewLineCharacterSet) + (NSCharacterSet *)newlineCharacterSet; @endDownload Archive
Compatible with:
- Mac OS X 10.0
- Mac OS X 10.1
- Mac OS X 10.2
- Mac OS X 10.3
- Mac OS X 10.4 PPC
- Mac OS X 10.4 Intel
- Mac OS X 10.5 PPC
- Mac OS X 10.5 Intel

There's a leak in this snippet. A CFRelease(newlineCFCharacterSet) needs to be added at the bottom of the if block. Either that or don't make a copy for newlineCharacterSet. It's being crated from a mutable copy, so you own it.
You are correct. I've applied the fix and tested it. Thank you!