大家好,我是 Xcode/Cocoa/Objective C 的新手,有一个烦人的问题我似乎无法找到。我有一个程序,其中包含一些类和一组内置的单元测试,在我创建项目时选中了 Xcode“包含单元测试”选项。在大多数情况下,一切正常,但是当我运行测试时,我看到以下错误:
objc[12505]: Class [class foo] is implemented in both /Users/[me]/Library/Application Support/iPhone Simulator/4.3/Applications/1F5222ED-0A3C-41BC-AFA3-CB8FC744EFCE/[app name].app/[app name] and /Users/[me]/Library/Developer/Xcode/DerivedData/[app name]-eumytpkyfitihadpqeyxjpwapxoa/Build/Products/Debug-iphonesimulator/[app name]Tests.octest/[app name]Tests. One of the two will be used. Which one is undefined.
查看构建测试目标的日志显示,Xcode 正在为测试目标编译 [class foo],但没有编译测试程序使用的其他类(如果我的术语不正确,请见谅)。
我的 [app name]Tests.m 文件的顶部如下:
#import "[app name]Tests.h
#import "[class x].h"
#import "[class y].h"
#import "[class z].h"
#import "[class a].h"
#import "[class foo].h"
[app name]Tests.m 使用了上述所有类,[class foo] 没有我能想到的真正意义,除了它可能是第一个创建的。
我尝试移动 #import "[class foo].h"
声明而不做任何更改。
我试过重命名 [class foo]、清理产品并在不做任何更改的情况下重建。
查看Finder中的文件,所有的程序类都在[app name]的根目录下,只有两个测试文件在[app name]Tests的根目录下,我觉得应该是这样.
通常运行测试实际上会工作,即使有这个错误,但有时它不会或断点会在 [class foo] 中执行不可预测,这真的很烦人。如有任何想法或建议,我们将不胜感激。
谢谢。
最佳答案
哎,不知道能不能解决你的问题,看来你得重建你的derived data文件夹了。
我在升级后也遇到了一些旧项目类的问题。我通过从模拟器中删除应用程序解决了这个问题,清理项目并转到/Users/[me]/Library/Developer/Xcode/DerivedData/的 derivedData 文件夹
您可以删除包含您的应用程序名称的整个文件夹。 Xcode 将自行重建它。 另一种有时有效的方法是使用 Xcode 4 创建一个新项目并将项目的所有文件移动到这个新项目。 这将确保您不会遇到 Xcode4 中更新的项目设置的问题。
关于iphone - Xcode 4 测试构建类冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898175/