我在这里的目标非常简单 - 我试图设置一个NSString
到一些测试数据,然后返回类,这应该是NSString
。这里是我的代码:NSString实例报告它的类为NSCFString
NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
日志说,类NSCFString
,不NSString
。这里发生了什么?
我在这里的目标非常简单 - 我试图设置一个NSString
到一些测试数据,然后返回类,这应该是NSString
。这里是我的代码:NSString实例报告它的类为NSCFString
NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
日志说,类NSCFString
,不NSString
。这里发生了什么?
NSString实际上是一个不同类型的字符串对象的容器类。通常,一个NSString构造函数确实是返回一个实际上类型为NSCFString的对象,它是Core Foundation CFString结构的一个薄包装器。
的NSString是class cluster,与其他类型的基础如NSNumber的和的NSArray沿着:
类簇是一个设计图案 ,基金会框架使得 广泛使用。类群集团 一些私人的,具体的 子类公共,抽象 超类。通过这种方式对 中的类进行分组,简化了面向对象框架的公开的 可见体系结构,而不减少其功能丰富性。 类集群是基于中讨论的 抽象工厂设计模式 “可可设计模式。”
为什么苹果没有采用这种做法的NSOrderedSet? NSOrderedSet的行为与接口级别的NSArray完全相同,但他们为它创建了一个独立的类。 – Robert 2012-07-09 13:48:11