Во время рефакторинга проекта 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 включает его, но сейчас это просто простой класс, который загружает другой ViewController с самого начала. Никакие другие классы в проекте не включают его.
Любые предложения о том, что может вызвать это или как я могу отладить его лучше?