Дублирующиеся проблемы символа

Во время осуществления рефакторинг проекта 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 в запуске. Никакие другие классы в проекте не включают его.

Какие-либо предложения на том, что могло бы вызывать это или как я мог бы отладить его лучше?

61
задан drewww 12 July 2010 в 20:22
поделиться

1 ответ

Я думаю, что это ошибка последнего компоновщика Apple при создании универсальных статических библиотек. В настоящее время я не могу найти номер ошибки, но это происходит из-за того, что она неправильно генерирует armv6 и armv7, не устраняя их неоднозначность.

Чтобы проверить, так ли это, измените конфигурацию на сборку только armv6 или amv7, и у вас не будет этой проблемы.

1
ответ дан 24 November 2019 в 16:55
поделиться