Ответ 1
Вы дважды связываете файл MenuScene.m. Вы, по-видимому, имеете его в статической библиотеке, а также в своем основном приложении.
Я пытаюсь запустить приложение cocos2d и сталкиваться с этой ошибкой, так как недавно я обновил свой sdk до 4.2 и мой cocos2d до 0.99.5.
Я попытался очистить свой проект, даже изменив развертывание Target ios, но ошибка остается прежней. Также переименуйте имя класса так же, чтобы избежать дублирования из имен классов библиотеки cocos2d.
ld: дублировать символ _OBJC_METACLASS _ $_ MenuSceneNew в /Users/umaidsaleem/Desktop/functionalityTest/ сборки/Debug-iphonesimulator/libcocos2d libraries.a(MenuScene.o) и /Users/umaidsaleem/Desktop/functionalityTest/build/functionalityTest.build/Debug-iphonesimulator/functionalityTest.build/Objects-normal/i386/MenuScene.o
Вы дважды связываете файл MenuScene.m. Вы, по-видимому, имеете его в статической библиотеке, а также в своем основном приложении.
Еще одна довольно простая вещь, чтобы проверить, что вы случайно не #import
a .m
, а не заголовочный файл .h
.
Случилось со мной.
Другим поводом для этого, для тех, кто сделал то же, что я и сделал, может быть то, что вы воссоздали класс управляемых объектов. Делая это и выбирая другую группу в структуре проекта, вы случайно создаете другую ссылку на те же файлы.
Я закончил с двумя ссылками для заголовка и реализации как в корне проекта, так и в моей группе моделей. Удаление верхних ссылок на файлы .h и .m избавило от сбоя связи.
Иногда Core Data вставляет AnyProjectNameModel.xcdatamodeld в источники компиляции фаз сборки. Проверьте его и удалите, и все снова запущено...
Сообщение об ошибке просто указывает сгенерированные ManagedObjects...
Правильное место для AnyProjectNameModel.xcdatamodeld - это ресурсы Copy Bundle на этапах сборки.
Проверьте источники компиляции вашей цели и посмотрите, включен ли файл class.m дважды
Глупые ошибки, которые я сделал, это то, что я назвал мой @implementation
таким же, как мой суперкласс.
В .h
@interface Subclass : Superclass
@end
В .m
#import "Subclass.h"
@implementation Superclass
@end
Никакие обычные рекомендации от google, казалось, не помогли, поэтому, если кто-то такой же сумасшедший или усталый, как и я (возможно, здоровое сочетание обоих), убедитесь, что вы не дублировали @implementation
!
У меня также возникла эта особая ошибка, когда файл, который не был добавлен в проект, упоминается где-то в проекте. В двух случаях, когда я столкнулся с этим, я удалил/удалил файлы из проекта, не удаляя ссылки на них, и при совместной работе над проектом, где партнер по команде добавил ссылку, но я не добавил файл в свою версию проект.
Я знаю, что OP решила их проблему, но я чувствовал, что это может помочь кому-то, кто читает этот вопрос, ища помощь.
Еще одна вещь, чтобы проверить двойную привязку - ее можно иметь один и тот же файл в двух разных местах в списке файлов слева. Затем компилятор компилирует и связывает его дважды.
Это происходит, например, при организации иерархии файлов.
Вам не нужно создавать библиотеку или что-то интересное - просто перетащите .m в два разных места в дереве проектов.
Не забудьте удалить ссылку только на одну из них, не требуется удаление файлов.
Мне удалили -all_load из 'Other Linker Flags'.
Я сам выяснил решение, извиняюсь за небольшую задержку отправки. Вся помощь очень ценится, но проблема возникает, когда я добавляю новый класс CCLayer и checkmark cocos2d 0.99.5 статической библиотеки, которая была неправильной. Затем я повторно объявляю свой класс, не проверяя и не очищаю свои цели, а затем не строю и не ухожу. Проблема решена сейчас.
XCode Beta разбилась обо мне, удалив ссылку на класс. Это вызвало проблему, описанную в ответе, исправление было другим.
В моей целевой фазе сборки в разделе "Источники компиляции" элемент, который дает мне печаль, был красным. Я не мог удалить его с помощью кнопки "минус", но набрав "skip" в флагах компилятора, красный класс исчезнет после перезагрузки проекта. Я предполагаю, что вы можете набрать что-нибудь там.
Мне потребовалось два часа, чтобы найти решение моей проблемы, я добавил его здесь для другого варианта для тех, у кого есть эта проблема, хотя это, вероятно, не будет распространенным.
Ни один из ответов не работал у меня, поэтому я сделал удаление файлов из проекта и выбрал только "Удалить ссылки".
Затем я добавил обратно те же файлы, и он сработал.
Это исправило мою ошибку. Возможно, XCode потерял ссылки, хранящиеся где-то, так как проект многокомпонентен.
Надеюсь, что это поможет кому-то.
Другая возможность для ошибки, например, возникает при столкновении имен классов. Либо 2 класса с одним и тем же именем в вашем проекте, либо класс из вашего проекта, столкнувшись с одним, определенным в некоторых библиотеках зависимостей.
Удалите цель с правой панели и снова добавьте цель. Это приведет к удалению дубликатов ссылок. Это может произойти, если 2 программиста добавят одну и ту же цель и зафиксируют файл проекта.
В моем случае я использовал двоичную библиотеку, включающую одно и то же имя класса, которое я использовал снаружи, Поэтому я изменил имя своего класса, и он отлично работает:)
У меня был проект с двумя целями. Объект с именем "Компонент", а второй - "Образец". Образец использовал компонент в качестве библиотеки ссылок. Затем Компонент использовал блок под названием MyPod (установленный с cocoapod).
Подпись была написана следующим образом:
def shared_pods
pod 'MyPod'
end
target 'Component' do
shared_pods
end
target 'Sample' do
shared_pods
end
Обе цели ссылались на общий список подкатегорий. При создании целевого компонента не возникает никаких проблем, но при создании образца я получаю дубликат символа _OBJC_METACLASS _ $_ ClassName. Я изменил Подфайл на:
def shared_pods
# empty
end
target 'Component' do
pod 'MyPod'
shared_pods
end
target 'Sample' do
shared_pods
end
И это решает проблему. Прошло 3 часа, надеемся спасти кого-то время.
В моем случае это происходило из-за того, что Xcode автоматически генерировал класс NSManagedObject, который затем столкнулся с моим вручную созданным классом NSManagedObject. В этом случае вы можете установить "Codegen" в "Manual/None" в Data Model Inspector для вашего вновь созданного объекта.