20

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

NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);

日志说该类是NSCFString,不是NSString。这里发生了什么?

4

2 回答 2

30

NSString 实际上是一个容器类,用于不同类型的字符串对象。通常,NSString 构造函数返回一个实际上是 NSCFString 类型的对象,它是核心基础 CFString 结构的薄包装。

于 2008-12-26T15:21:09.160 回答
25

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

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

于 2008-12-26T17:12:42.290 回答