I think it's sometehing to do with the fact that you don't actually get an NSDictionary back. You get an instance of NSFileAttributes back and they've overridden objectForKey in that class.

Looking at the structure of NSFileAttributes and from a bit of playing, it looks like when you ask for objectForKey, it will generate a Cocoa object on the fly from other data structures behind the scenes.

It also seems to cache the dictionary when generated by calling something like keyEnumerator on the dictionary (which is what would get called if you call keys, or description). I'm guessing that it only gets NSFileBusy from the dictionary and isn't able to generate that on the fly.

You should file a bug.