Ответ 1
Просто перейдите к "Build Phases" → "Compile Sources" и найдите дубликаты классов.
У меня есть приложение iOS на Xcode 4.6, и когда я недавно пытался создать и запустить в симуляторе iPhone 6.1, я получил "ошибку компоновщика Mach-O". Он продолжал говорить:
ld: 17 повторяющихся символов для архитектуры i386 clang: ошибка: команда компоновщика не сработала с кодом выхода 1 (используйте -v для вызова вызова)
Кто-нибудь знает, как это решить?
Большое спасибо!
Просто перейдите к "Build Phases" → "Compile Sources" и найдите дубликаты классов.
Проверьте, есть ли у вас файлы < *. m "в #import
! Похоже, это была моя ошибка...
В моем примере я объявил
extern NSString const *keyString
в двух разных файлах. Я переименовал один из них, и он решил мою проблему.
Очистите продукт и запустите
если все еще не работает, то
В моем случае это были константы.
NSString *const cellID = @"cellID";
Эта строка была написана в двух файлах .m. После добавления ключевого слова static
в начале проблема была решена.
Эта проблема может быть воссоздана и в новом проекте. Вы могли бы подумать, что определение констант в разных файлах .m не будет иметь никакого эффекта, поскольку они являются частными. Но я не знаю, как компилятор обрабатывает вещи за сценой. Кроме того, когда вы нажимаете на проблему из навигатора проблем, она не открывает страницу в редакторе, как для любой другой проблемы. Действительно расстраивает.
Я не уверен, что смогу дать вам решение, но я поделюсь ответом, так как это случилось со мной и на xCode 4.6. Я добавил заголовок класса C и файл реализации и включил их в main. Затем я решил удалить этот новый заголовок и реализацию класса C. Когда я закончил добавление нового c class/header снова с тем же именем и вызовами функций, я закончил с вашей ошибкой.
Честно говоря, это может быть ошибка. Единственный и быстрый способ, с помощью которого я зафиксировал это, - запустить новый проект и потянуть все классы.
Удостоверьтесь, что у вас нет не-мгновенных методов с одним и тем же именем в нескольких классах (например, если у меня есть два диспетчера видимости, которые очень похожи, чтобы быстро перемещаться, я копирую и вставляю код с одного диспетчера представлений на второй и у них обоих есть методы, называемые такими же: NSMutableString * filterStringFromStringWithFilter (NSString * string, NSString * filter)), тогда приложение запутывается, какой из этих методов использовать, поскольку они оба доступны, RENAME IT во втором классе и изменить любой вызывает этот метод в этом классе, и вы устранили путаницу. Разве мы не хотим, чтобы все было ясно?
Если вы хотите изменить значение как в буксировке другого класса. Не забывайте отмечать статическими ключевыми словами.
или clang произведет такую ошибку ниже без интерпретации значений.
Ошибка компоновщика Apple Mach-O clang: ошибка: сработала команда компоновщика с кодом выхода 1
Когда вы реорганизуете функцию класса, вы также иногда получаете эту ошибку. Просто перейдите в Product- > Clean and rebuild.
Сборка фаз "- > " Скомпилировать источники "нажмите кнопку" Проверить настройки "
он исправит ваш проект