Why does Objective C provide both class NSString and subclass NSMutableString rather than just provide NSMutableString? Isn\'t a NSString equivalent to \"const NSMutableStr
I would say the general rule is "don't use a class whose purpose is to provide functionality you don't need". If you need to change the contents of a string directly, use NSMutableString. If not, use NSString. In terms of size and how much heap space they take up, the classes themselves should be pretty similar.