Во время рефакторинга проекта iOS, я столкнулся с этим медведем ошибки. На этапе связывания я получаю это сообщение:
ld: дубликат символа _OBJC_IVAR _ $ _ TinCanViewController.currentViewController в /path/to/TinCanViewController-E98A666B7AF2673A.o и /path/to/TinCanViewController-E98A663BAA*2
Насколько я могу судить, похоже, что TinCanViewController-E98A666B7AF2673A.o
объявляет указанный символ дважды; оба пути указывают на один и тот же файл .o. Я запустил nm
для этого конкретного файла, и он включал этот символ только один раз:
00008150 S _OBJC_IVAR _ $ _ TinCanViewController.currentViewController
Я запустил nm
для всех других файлов .o в каталоге, чтобы посмотреть, объявляют ли они этот символ тоже, но это не так. Это происходит с любым членом, который я добавляю в класс TinCanViewController - он не специфичен для currentViewController.
Мне кажется, что я как-то дважды каким-то образом связываюсь с классом, но я довольно усердно прошел и проверил все ссылки на этот класс. В реорганизованной версии их практически нет. AppDelegate включает его, но сейчас это просто проходной класс, который загружает другой ViewController в начале. Никакие другие классы в проекте не включают его.
Любые предложения о том, что может быть причиной этого или как я мог бы отладить это лучше?