iphone – Xcode 4测试构建类冲突

嘿所有,我是
Xcode / Cocoa / Objective C的新手,并且有一个令人烦恼的问题,我似乎无法追查.我有一个程序包含一些类和一组单元测试,在我创建项目时使用Xcode“include unit tests”选项进行检查.在大多数情况下,一切正常,但当我运行我的测试时,我看到以下错误:

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]中执行不可预测,这真的很烦人.任何想法或建议将不胜感激.

谢谢.

最佳答案 嘿,不知道它是否解决了你的问题,但似乎你必须重建你的派生数据文件夹.

升级后我的旧项目类也遇到了一些问题.我通过从模拟器中删除应用程序解决了问题,清理项目并转到/ Users / [me] / Library / Developer / Xcode / DerivedData /中的derivedData文件夹

您可以使用应用程序名称删除整个文件夹. Xcode将自行重建它.
另一种有效的方法是使用Xcode 4创建一个新项目,并将项目的所有文件移动到这个新项目中.
这将确保您不会遇到Xcode4中更新的项目设置问题.

点赞