класс реализован в обоих. один из двух будет использован

<p>у меня есть проект, который имеет зависимость (установленную через cocoapods) с помощью socketrocket и импортировал статическую библиотеку из heapanalytics. очевидно, библиотека heapanalytics уже использует socketrocket. я не получаю ошибок при компиляции, но во время выполнения получаю следующее:</p><pre><code>class srwebsocket is implemented in both [path] and [path]. one of the two will be used. which one is undefined. </code></pre><p>я не уверен, как с этим справиться, потому что большинство решений, которые я видел, требуют компиляции статической библиотеки, сами меняют имена классов и тому подобное, и у меня нет доступа к источнику.</p><p>любые рекомендации?</p>

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

<h1>обзор:</h1><p>ошибка предполагает, что один и тот же символ/класс определяется дважды.</p><h1>решение:</h1><ul> <li>проверьте связанные рамки, чтобы увидеть, есть ли какие-либо дубликаты. если так, удалите дубликат</li> <li>очистить папку сборки (ctrl + shift + k)</li> <li>если симулятор, то перезагрузите симулятор и попробуйте</li> <li>если устройство, перезагрузите устройство и попробуйте</li> </ul><h1>мой опыт:</h1><p>я сталкивался с одной и той же проблемой дважды: однажды это были дублирующие фреймворки, а другой симулятор сброса времени помог.</p>

<p>в моем случае эта ошибка возникала, когда я без необходимости добавлял исходный файл как к основной цели приложения, так и к цели тестирования:</p><p> <a href="https://i.stack.imgur.com/ohsfr.png"><img src="https://i.stack.imgur.com/ohsfr.png" alt="target membership with both targets selected"></a> </p><p>удаление цели теста из <code>target membership</code> решил это:</p><p> <a href="https://i.stack.imgur.com/d4fca.png"><img src="https://i.stack.imgur.com/d4fca.png" alt="target membership with only one target selected"></a> </p>

<p>у меня было это предупреждение больше месяца, затем я наконец попробовал это, и это сработало для меня:</p><ol> <li><strong>сброс</strong> the <strong>симулятор</strong> (меню: оборудование -> удалить все содержимое и настройки ...)</li> <li><strong>очистить</strong> проект (command + shift + k)</li> <li><strong>очистить</strong> <strong>сборка папки</strong> (command + option + shift + k)</li> <li><strong>выполнить</strong> код на симуляторе снова</li> </ol>