代码之家  ›  专栏  ›  技术社区  ›  Andy White

目标C对象的两阶段构造

  •  13
  • Andy White  · 技术社区  · 17 年前

    2 回复  |  直到 17 年前
        1
  •  28
  •   Rob Napier    17 年前

    +alloc 早在1991年,几个月前我碰巧问过他一个非常相似的问题。添加 是为了提供 +allocWithZone: ,这是为了在内存非常紧张(4M)的NeXTSTEP 2.0中添加内存池。这允许调用者控制对象在内存中的分配位置。它是对 +new 以及它的亲属,它曾经是(现在仍然是,尽管没有人使用它)一个基于Smalltalk的单相构造函数 new +alloc 已经根深蒂固,没有回头路了 ,即使实际上选择了你的 NSZone 很少有重大价值。

    所以这不是一个大的单相/两相哲学问题。在实践中,Cocoa具有单相结构,因为您总是(并且应该)在一次调用中背靠背调用这些结构,而无需对 +alloc