+5  A: 

Immutable classes such as NSString (but not NSMutableString) don't need to offer an actual copy because they cannot be altered. My guess is that these classes are simply performing an optimization which shouldn't affect the copier's behavior.

NilObject
Yes on the non-mutable objects, copy is the same as retain.
Chris Lundie