【问题标题】:NSString instance reports its class as NSCFStringNSString 实例将其类报告为 NSCFString
【发布时间】:2008-12-26 15:12:56
【问题描述】:

我的目标很简单——我试图为一些测试数据设置一个NSString,然后返回应该是NSString的类。这是我的代码:

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

日志说类是NSCFString,而不是NSString。这是怎么回事?

【问题讨论】:

    标签: objective-c cocoa class nsstring class-cluster


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      类簇是一种设计模式 基金会框架使 广泛使用。类簇组 一些私人的、具体的 公共抽象下的子类 超类。类的分组在 这种方式简化了公开 可见的架构 没有面向对象的框架 减少其功能的丰富性。 类簇基于 抽象工厂设计模式 在“Cocoa 设计模式”中讨论。

      【讨论】:

      • 为什么 Apple 没有对 NSOrderedSet 采用这种方法? NSOrderedSet 在接口级别的行为与 NSArray 完全一样,但他们为它创建了一个独立的类。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 2023-04-10
      • 2014-12-23
      • 2018-10-20
      • 1970-01-01
      相关资源
      最近更新 更多