dre*_*www 61 iphone linker symbols objective-c ipad
在iOS项目的重构过程中,我碰到了这个bug.在链接阶段,我收到此消息:
ld:/path/to/TinCanViewController-E98A666B7AF2673A.o和/path/to/TinCanViewController-E98A666B7AF2673A.o中的重复符号_OBJC_IVAR _ $ _ TinCanViewController.currentViewController
据我所知,它看起来声称TinCanViewController-E98A666B7AF2673A.o是两次声明指定的符号; 两个路径都指向完全相同的.o文件.我跑nm了那个特定的文件,它只包括那个符号一次:
00008150 S _OBJC_IVAR _ $ _ TinCanViewController.currentViewController
我nm在目录中运行了所有其他.o文件,看看它们是否以某种方式声明了这个符号,但它们不是.这发生在我添加到TinCanViewController类的任何成员 - 它不是特定于currentViewController.
我觉得我必须以某种方式以某种方式与班级联系两次,但我非常刻苦地检查了所有对这门课程的引用.在重构版本中,基本上没有.AppDelegate包含它,但是现在它基本上只是一个直通类,它在开始时加载另一个ViewController.项目中没有其他类包含它.
有关可能导致此问题的原因或如何更好地调试它的任何建议?
Sha*_*eem 238
我在最新的Xcode 4上遇到了这个问题.原因:我包括file.m而不是file.h
可能,你包括TinCanViewController.m(应该是TinCanViewController.h)
max*_*wer 31
我发生了这种情况,但我的问题与我们的回购合并问题有关..m文件在一个位置列出两次,它应该只列出一次(在项目中,但不在文件/组结构中,因此您无法在Xcode中看到问题,只有错误).修复程序是在项目文件中打开.pbxproj文件并在该文件中查找重复条目.删除副本后,项目建立就好了.