I declare the object variable as a NSString
But when I use the XCode to look into my object, I saw there are two type of String, it seems that the system automatically transfer to another:

What are the different between them? Are they interchangeable to one and others. Also, what is the condition two change to another?
Thanks.
They’re both concrete subclasses of
NSString.__NSCFStringis one created during runtime via Foundation or Core Foundation, while__NSCFConstantStringis either aCFSTR("...")constant or an@"..."constant, created at compile-time.Their interfaces are private. Treat them both as
NSStringand you should have no trouble.