【问题标题】:Duplicate Classes in Cocoa-TouchCocoa-Touch 中的重复类
【发布时间】:2009-10-04 06:38:24
【问题描述】:

在 Cocoa-Touch iPhone 应用程序中,如果我将名为 List 的类添加到我的 Xcode 项目中,我会收到此错误:

objc[25878]:类列表已实现 在 /usr/lib/libobjc.A.dylib 和 /用户/史蒂夫/图书馆/应用程序 支持/iPhone 模拟器/用户/应用程序/4883BE28-51DA-493C-9D8A-28FD026708F4/重复类Test.app/重复类 测试。将使用两者之一。 哪一个是未定义的。

我还没有使用 List 类——我刚刚将它添加到项目中。

如果类被重命名,错误就会消失。知道可能导致此错误的原因是什么吗? Apple 是否有自己的 List 类?

【问题讨论】:

  • 因为 ObjectiveC 不支持命名空间,所以在你的类名前加上一些东西通常是个好主意。 Apple 经常使用 NS 和 UI(以及其他),我使用我的首字母。如果我编写一个列表类,我会称之为我的 JBList。它有助于避免此类错误,尤其是如果 Apple 决定在未来添加类似的类。
  • @jbrennan:我知道 Objective-C 中的前缀约定;但是,我认为只有在要共享类时才需要为类添加前缀(即它们将在您自己的项目之外使用)……但是,经过这次体验后,我可能会养成为我所有的前缀添加前缀的习惯类...

标签: iphone objective-c cocoa-touch


【解决方案1】:

List 是可以追溯到 Objective-C 起源的类之一。它是 Object 的子类。我们不再使用它,但它仍然存在,因此遗留代码不会损坏。

【讨论】:

    【解决方案2】:

    看来是苹果有自己的List类:

    reykjavik:/Users/nall% nm  /usr/lib/libobjc.A.dylib | grep List
    00015571 t +[List initialize]
    0001552c t +[List newCount:]
    000154fc t +[List new]
    0001544f t -[List addObject:]
    000153f8 t -[List addObjectIfAbsent:]
    00015255 t -[List appendList:]
    0001510a t -[List capacity]
    000155f6 t -[List copyFromZone:]
    00015115 t -[List count]
    000151bc t -[List empty]
    00015485 t -[List freeObjects]
    000155aa t -[List free]
    ...
    

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多