дубликат объявления интерфейса для класса 'foo'

<p>я работал над своей программой, и, кажется, что-то изменилось в настройках. внезапно у меня появляется ошибка "дублирующее объявление интерфейса для класса" foo "". в нем упоминается, что заголовочный файл дублируется, но есть только одна копия.</p><p>интересно, что это происходит только в режиме отладки, а не в режиме устройства.</p><p>у кого-нибудь есть идеи, что может быть не так?</p><p>я использую objective-c++ и некоторые статические библиотеки.</p>

<p>я нашел проблему. было две копии файла заголовка, и xcode запутался.</p><p>теперь загадка в том, как xcode решил скопировать эти файлы сам по себе ...</p>

<p>у меня была точно такая же проблема. у меня было две копии заголовка, и я удалил старый, удалив ссылку на него в xcode. тогда была только одна ссылка на заголовок, которая указывала на новый файл заголовка в навигаторе проекта.</p><p>после фактического удаления старого заголовка из файловой системы проблема исчезла.</p><p>это может быть ошибка в xcode. может быть, иногда, когда вы удаляете ссылку на файл, часть ссылки остается в файле проекта.</p>

<p>у меня есть это сообщение об ошибке, и у меня нет дублирующего заголовка или повторяющихся импортов. проблема в том, что я переименовал файл заголовка, и xcode каким-то образом сохранил их в кэше, что выдает ошибку сборки.</p><p>я сделал следующее, чтобы исправить это. надеюсь, это поможет тем, кто уже попробовал другой ответ и все еще получил ошибки.</p><ol> <li>чистый проект (ы)</li> <li>удалите "производные данные" (организатор> вкладка "проекты", выберите проект и нажмите "удалить")</li> <li>перезапустите xcode</li> <li>строить</li> </ol>

<p>у меня была похожая проблема, но у меня не было двух копий исходных файлов. в моем случае у меня была следующая ситуация:</p><p><strong>класс a</strong> дал ошибку выше и <strong>класс b</strong> имел свойство, использующее тип класса a.</p><p>проблема заключалась в том, что в классе b я назвал #import "class a" как в файле .h, так и в файле .m. это вызвало проблему выше в моем случае. надеюсь, это кому-нибудь поможет.</p>

<p>я изменил с "#include" на "#import" во всех заголовках файлов, и это решило проблему. я предполагаю, что когда вы "#include" файл, вам нужно написать свои собственные меры защиты от нескольких включений, в то время как xcode обрабатывает это для вас, когда вы используете "#import".</p>

<p>эта ошибка возникает из-за присвоения одного и того же имени переменной различным объектам. это ошибка после xcode7.0. таким образом, чтобы преодолеть эту проблему, просто <strong>перейдите к настройке сборки</strong> и найдите <strong>без общих блоков</strong> и установите ее <strong>нет</strong>.</p><p>и построить снова, вы не получите эту ошибку снова.</p><p><strong><em> cheerskp </em></strong></p>

<p>у меня также была именно эта проблема при архивировании рабочей области с различными самодельными статическими библиотеками. проект будет работать нормально и работать на симуляторе, но когда я попытался "архивировать" сборку для тестирования adhoc, я получал эти дублированные ошибки определения интерфейса. я решил, что на этапе "копировать заголовки" правильно указываются заголовки public/project/private. у меня был один заголовочный файл, который был ошибочно настроен на "проект". он должен был быть "общедоступным", и после этого архив был успешно создан.</p>

<p>для меня эта проблема была вызвана, когда я перешел на <code>use\_frameworks!</code> на cocoapods. я импортировал заголовок из fbsdkcorekit в удобном классе, который я использовал для расширения методов. это было нормально, пока я не переключился на использование фреймворков, когда использование локальных включений (<code>#import "fbsdkaccesstoken.h"</code>) больше не работает; мне пришлось переключиться на глобальные включения (<code>#import <fbsdkcorekit/fbsdkaccesstoken.h></code>). <a href="http://www.innerexception.com/2015/05/cocoapods-useframeworks-means-bridging.html">эта статья</a> описание того, почему вы больше не включаете заголовки в файл моста, указало мне правильное направление.</p>

<p>моя проблема заключалась в следующем. я добавил поп-анимационную среду в свой проект, но использовал xcodeproj вместо xcworkspace. после настройки я смог создать цель pop-iso-framework, но не смог создать цель своего приложения. позже я понял, что xcode добавил поп-классы в <strong>фазы сборки -> компилировать источники цели моего приложения</strong>. удаление всех поп-классов оттуда устранило проблему.</p>

<p>у меня была та же самая проблема, строящая структуру. ошибка "предыдущее определение здесь" указывает на тот же файл заголовка и номер строки, что и исходная ошибка "дублирующее определение интерфейса для класса". ничего из вышеперечисленного не сработало, и в коде не было ошибок. я выполнил поиск spotlight для скрытого заголовка, и обнаружились две копии: одна, которую я ожидал, и другая в build/debug-iphonesimulator/include. я сделал чистку, а затем вручную удалил каталог сборки. проблема ушла.</p>

<p>у меня была эта проблема при использовании двух версий a.h файлов a.m. каждый для разных целей. поэтому я сделал две папки (физические каталоги) и держал каждый a.h и a.m в отдельной папке. затем добавили папку к нужной цели. решил проблему для меня.</p><p>немного вне контекста, но может помочь. !!</p>

<p>в моем случае проблема заключалась в том, чтобы повторно использовать файлы из другого проекта. я не был осторожен с "копировать файлы при необходимости" в диалоговом окне "копировать", и вместо создания новых копий в новом проекте он ссылался на файлы в исходном проекте. как только я удалил ссылки и правильно скопировал файлы, все было в порядке.</p>

<p>была такая же проблема, казалось, у меня было слишком много файлов class.m в моем файле project.pbxproj.</p><p>всегда делайте резервную копию этого файла, прежде чем редактировать его на всякий случай!</p>