在一个iOS项目的重构过程中,我遇到了一个错误.在链接阶段,我得到了以下信息:
ld:重复符号_OBJC_IVAR_$_TinCanViewController.currentViewController位于/path/to/TinCanViewController-E98A666B7AF2673A中.o和/path/to/TinCanViewController-E98A666B7AF2673A.o
据我所知,它似乎声称TinCanViewController-E98A666B7AF2673A.o
在两次声明指定的符号;两条路径指向完全相同的方向.o文件.我在那个特定的文件上运行了nm
,它只包含那个符号一次:
00008150 S_OBJC_IVAR_$_TinCanViewController.currentViewController
其他的我都跑了nm
分.o目录中的文件,以查看它们是否也以某种方式声明了此符号,但它们不是.这发生在我添加到TinCanViewController类的任何成员身上——它不是特定于currentViewController的.
我觉得我必须以某种方式与该类链接两次,但我已经非常认真地判断了所有对该类的引用.在重构版本中,基本上没有.AppDelegate包含它,但现在它基本上只是一个passthrough类,在开始时加载另一个ViewController.项目中没有其他课程包含它.
关于是什么导致了这种情况,或者我如何更好地调试它,有什么建议吗?