NSString实例将其类报告为NSCFString

blo*_*ilk 20 cocoa class objective-c nsstring class-cluster

我的目标非常简单 - 我正在尝试设置NSString一些测试数据,然后返回类,这应该是NSString.这是我的代码:

NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
Run Code Online (Sandbox Code Playgroud)

日志说这个课程NSCFString不是NSString.这里发生了什么?

mip*_*adi 30

NSString实际上是不同类型的字符串对象的容器类.通常,NSString构造函数确实返回一个实际上是NSCFString类型的对象,它是Core Foundation CFString结构的一个瘦包装器.


Mar*_*eau 25

NSString是一个类集群,以及其他Foundation类型,如NSNumber和NSArray:

类集群是Foundation框架广泛使用的设计模式.类集群在公共抽象超类下组合了许多私有的具体子类.以这种方式对类进行分组简化了面向对象框架的公开可见体系结构,而不会降低其功能丰富性.类集群基于"可可设计模式"中讨论的抽象工厂设计模式.