我的目标非常简单——我试图设置NSString
一些测试数据,然后返回应该是NSString
. 这是我的代码:
NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
日志说该类是NSCFString
,不是NSString
。这里发生了什么?
我的目标非常简单——我试图设置NSString
一些测试数据,然后返回应该是NSString
. 这是我的代码:
NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
日志说该类是NSCFString
,不是NSString
。这里发生了什么?
NSString 实际上是一个容器类,用于不同类型的字符串对象。通常,NSString 构造函数会返回一个实际上是 NSCFString 类型的对象,它是核心基础 CFString 结构的薄包装。
NSString 是一个类 cluster,以及其他 Foundation 类型,例如 NSNumber 和 NSArray:
类集群是 Foundation 框架广泛使用的一种设计模式。类簇将许多私有的具体子类组合在一个公共的抽象超类之下。以这种方式对类进行分组简化了面向对象框架的公开可见架构,而不会降低其功能丰富性。类集群基于“Cocoa 设计模式”中讨论的抽象工厂设计模式。</p>