Chris:
-maximumRangeOfUnit: seems to work. I seemed to have overlooked the NSWeekdayCalendarUnit since weekdays means the days Monday-Friday (at least in these parts) but in the APIs it represents a any day relative to a week. I'm not sure how big an assumption it is that all weeks are the same length for any particular calendar. It looks like the following would also work, and I assume should take into account any variances in week-length:

range = [[NSCalendar currentCalendar] rangeOfUnit:NSWeekdayCalendarUnit
inUnit:NSWeekCalendarUnit
forDate:date];

This will do what Tom was expecting. For a Gregorian calendar, it should always return {1, 7}. Still not useful for getting the starting day relative to the month. In such a case you can create an NSCalendarDate, get its -dayOfWeek and then create a new date by subtracting that number of days from the original date.

In any case, going to amend the article to tell people to read the comments.