【问题标题】:Is there a name for a pure-data Objective-C class?有纯数据 Objective-C 类的名称吗?
【发布时间】:2011-02-20 04:01:45
【问题描述】:

这不是一个特定于代码的问题,而是一个 Objective-C 命名法问题。在 C 中,您有 struct 用于纯数据。在 Enterprise Java 中,您有“bean”类,它们是具有 getter 和 setter 的纯成员变量,但没有业务逻辑。在 Adob​​e FLEX 中,您有“值对象”。

在 Objective-C 中,是否有一个对象的专有名称(当然是 N​​SObject 的后裔),它只有 ivars 和 getter/setter(或者 @property/@synthesize,如果你想花哨的话)并且没有真正的商业逻辑?

一个更具体的例子可能是一个简单的类,它包含文件名、文件大小、描述和各种其他元数据的 getter 和 setter。然后,您可以将其中的一堆轻松放入容器(NSDictionary、NSArray)中,而无需对 C 结构进行凌乱的 NSValue 包装。与将一堆松散类型的子 NSDictionaries 放入父容器对象相比,它还具有更多的结构。

【问题讨论】:

    标签: objective-c data-structures nomenclature


    【解决方案1】:

    不,没有特殊名称(至少据我所知)。从NSObject 继承的所有Objective-C 对象都是第一类对象。您当然可以仅使用 getter 和 setter 来实现类,但即使是合成属性也具有用于原子性和内存管理的温和“业务逻辑”。如果需要,您可以将 C 结构用于纯数据(Cocoa 中的示例是 NSRect),但是,正如您所说,与其他类(例如 NSDictionary)一起使用会更加困难。

    【讨论】:

    • 我明白你关于使用 NSObject 获得的底层“业务逻辑”的观点。可以说,通过从 java.lang.Object 继承,您会在 Java 中获得类似的包袱,但尽管有与线程相关的方法,但它们仍被视为纯数据。
    【解决方案2】:

    Objective-C 中没有此类类的正式名称。人们倾向于将诸如“值对象”或“纯数据对象”之类的东西称为“值对象”或“纯数据对象”,但这两者都有些重载,因为它们也可以指代 NSValue(或属性列表值)和 NSData 子类。我认为后者是描述它们的最简洁的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多