Повторяющийся символ во время ссылки - PullRequest
2 голосов
/ 08 января 2010

Так же, как фон, нет ошибок или предупреждений во время компиляции в предметном проекте "Project".

Существует множество случаев использования одного и того же имени переменной экземпляра в двух (или более классах). Далее я буду использовать имя переменной «index» в качестве примера. Появляется как переменная экземпляра в class1 и class2. Переменная имеет разные, но схожие значения в обоих классах, поэтому используется общий термин.

Я определяю индекс в заголовочном файле для class1 и class2, например:

@ интерфейс класса 1: NSObject { int index; } ...

Повторите для класса 2.

Когда я собираю проект, Xcode сообщает:

Повторяющийся символ _index в /Project/build/Project.build/Debug-iphonesimulator/Project.build/Objects-normal/i386/class1.o и /Project/build/Project.build/Debug-iphonesimulator/Project.build /Objects-normal/i386/class2.o

Изменение вхождений «index» на «indexnotverycommon» сообщает об ошибке с новым именем.

Изменение вхождений на «index1» и «index2» соответственно избавляет от ошибки. Затем XCode сообщает о следующем дубликате, найденном во время компоновки, и так далее, и так далее.

Я могу продолжить процесс переименования, хотя я бы предпочел не делать этого, поскольку я обеспокоен тем, что существует более патологическая основная проблема.

Любой совет или вопрос приветствуется.

Ответы [ 4 ]

2 голосов
/ 08 января 2010
Индекс

также является функцией C и, следовательно, очень неудачным именем в Objective-C. Эта статья описывает, почему не следует использовать индекс в качестве имени.

Я не уверен, почему вы получаете дубликаты символов.

0 голосов
/ 30 сентября 2012

не #include или #import .m файлы. Просто добавьте эти .m файлы в Target | Фазы сборки. Не добавляйте .h файлы на этапах сборки, но #import .h файлы везде, где вам нужны эти функции.

Компилятор знает, что это просто заголовочный файл «только для информации» и что тела функций будут доступны, когда он скомпилирует файлы .m и поместит их все в 1 исполняемый файл

Заголовочный файл содержит только предварительные объявления. Компилятор знает, что тело либо определено в другом файле, либо находится в библиотеке, связанной с проектом

0 голосов
/ 25 марта 2012

Подсказка для проверки #import "Xxx.m" вместо правильного .h сработала.

Быстрый поиск по всему рабочему пространству для "Xxx.m" обнаружил ошибку в include, которая вызывала ошибку ссылки.

0 голосов
/ 08 января 2010

Я понял это, используя функцию поиска в проекте XCode. Спасибо за совет по поводу индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...