2016-01-04 4 views
0

Здесь у меня есть несколько проблем (семантических) при запуске моего проекта, который используется для успешного запуска. Это проект, модифицированный из Anywall от Parse. Вопросы были найдены до сих пор в PFImageView.h и PFLoginView.h. Пожалуйста, смотрите подробности в картинке ниже:Сбой проекта с несколькими семантическими проблемами в PFImageView.h, PFLoginView.h

enter image description here

Я сомневаясь, что это может быть вплоть до Parse.framework/ParseUI.framework. Однако, прежде чем я попытаюсь обновить эти рамки (что, я уверен, вызовет у меня большой беспорядок), я хотел бы услышать от тех, у кого может быть больше опыта в этом. С чего начать, чтобы решить эти проблемы? Заранее большое спасибо.

Edit:

После того как я закомментирована @import ParseUI.h в SearchViewController.h следующий комментарий от @ Putz1103, он устранил все смысловые вопросы, которые у меня есть. Теперь у меня только ниже вопрос остальной вместо этого:

enter image description here

+1

Эти ошибки говорят о том, что вы включили этот класс дважды в свой проект. Поэтому при первом включении компилятор создает классы и объекты. Во второй раз, когда он включен, компилятор говорит «Я уже сделал это ...» и сбой. Поэтому выясните, почему он включен дважды и удаляет один из них. – Putz1103

+0

Правильно, похоже, но я просто не знаю, почему это происходит. Я не изменил и ничего не добавил с тех пор, как он работал. – SanitLee

+1

Попробуйте удалить '@import ParseUI.h' из вашего' SearchViewController.h'. Измените все классы, необходимые в файле .h для '@ class'. Посмотрите, что это все решает. Вы можете получить ошибки декларации, но с ними легче справиться. – Putz1103

ответ

1

Первая проблема с вашим проектом является двойным импортом класса PFImageView в свой проект. В какой-то момент вашего проекта компилятор получает запрос на добавление этого класса в сборку. Затем другая часть проекта запрашивает его снова, а компилятор выдает ошибку, говоря, что это уже сделано. Это очень часто происходит с библиотеками. Библиотека может импортировать класс, который уже используется вашим основным проектом. Поскольку они создаются отдельно и затем связаны друг с другом после сборки, компилятор не знает, что дублирование существует до тех пор, пока все не будет построено. Способ решения заключается в том, чтобы убедиться, что вы только импортируете каждый класс один раз (в том числе во все ваши библиотеки).

Вторая проблема идентична первой. Проблема говорит duplicate symbol. Компилятор пытается добавить в проект два одинаковых класса или переменной. Обычно это происходит из-за дублирования импорта (и опять же, как правило, в библиотеках по моему опыту). Убедитесь, что каждый класс, который вы используете в любом месте, только импортируется в проект один раз. Легче сказать, чем сделать, но это хорошее упражнение, потому что это часто встречается с библиотеками.

Смежные вопросы