Xcode 4: автоматическое заполнение и переход к определению не работает в моем проекте Xcode 3 - PullRequest
43 голосов
/ 11 марта 2011

Мой проект был создан в Xcode 3, я открываю его в Xcode 4 и замечаю следующее:

  • «Перейти к определению» больше не работает с моими собственными символами (однако символы пользовательского интерфейса * и даже символы TT * работают нормально!)
  • Автозаполнение / «Кодовое значение» так же плохо, как Xcode 3, т. Е. Предлагает все
  • Классы моих проектов не отображаются в навигаторе классов (опять же, классы system и Three20 отображаются!)

Однако при создании нового проекта Xcode 4 эти функции do работают. К сожалению, единственный обходной путь, кажется, состоит в том, чтобы воссоздать проект и повторно импортировать все. Этот проект слишком большой!

Вещи, которые я пробовал:

  • Удаление производных данных в органайзере
  • Очистка проекта
  • Установка Xcode 4 Gold Master и финальной версии

Обновление

  • Эта ошибка , а не была исправлена ​​в Xcode 4.0.1.

Ответы [ 15 ]

67 голосов
/ 24 августа 2011

Вкл. Окно Меню:

  1. Органайзер
  2. Вкладка проектов
  3. Ваш проект
  4. Удалить производные данные
  5. Перезапустить Xcode

Небольшой совет от другихответ:

После шага 4 не перестраивайте проект, а просто перезапустите Xcode.

16 голосов
/ 17 сентября 2011

Что сработало для меня, когда я потерял xcodes, супер хороший намек на код был:

Окно (меню) -> Органайзер (меню) -> Проекты (вкладка)

then

Нажмите delete Derived Data (это то же самое, что перейти в папку и удалить ее вручную)

НО !!!!! на этом шаге не восстанавливатьно закройте xcode и снова откройте проект.Это сработало для меня.

7 голосов
/ 23 марта 2011

EDIT: Похоже, что если у вас есть какие-либо настраиваемые пути поиска заголовков для поддержки нескольких целей с общим кодом, индексация XCode 4 будет нарушена, а затем помощник и кодекс с ним. Я поднял это как #ID 9182099 с Apple. Существует также проблема, заключающаяся в том, что если у вас есть какие-либо противоречивые настройки между глобальными и целевыми настройками проекта, индекс не будет выполнен правильно. Убедитесь, что настройки вашей сборки соответствуют.

Я только что столкнулся с этой проблемой в очень большом, многоцелевом коммерческом проекте. В качестве дополнительной проблемы все xib-файлы не будут отображать контроллер в представлении помощника, и ни одно из представлений подкласса / суперкласса / братьев / сестер / категорий не будет работать.

После долгих поисков и экспериментов с удалением индексов и т. Д. Я был вынужден создать новый пустой проект и повторно импортировать все. Я знаю, что вы сказали, что ваш проект слишком велик для этого, но я не думаю, что есть какие-либо другие варианты. В конце концов, мне понадобилось почти целый день, чтобы полностью перенести мой проект. Я полагаю, что вы могли бы надеяться на разрешение в следующем выпуске, но я решил попробовать, чтобы воспользоваться преимуществами повышения производительности от новых функций.

Для этого я создал новый «пустой» проект, а затем вручную воссоздал нужные мне цели. Затем я удалил исходные файлы и файлы .plist для новых целей, оставив меня снова с пустым проектом с тремя нужными мне целями.

Затем я просто выбрал «добавить файлы ...» в проект по одной папке за раз, связывая при необходимости целевое значение. Я остановил и построил каждую цель, поскольку она была импортирована, чтобы справиться с любыми ошибками компилятора, которые дал мне последний кланг.

Если у вас сложная иерархия групп, которая не сопоставлена ​​со структурой папок файловой системы, то вам нужно будет либо воссоздать группы после импорта, либо пройти болезненный процесс перемещения всех ваших файлов в подпапки и перенаправления ссылок в XCode.

Вам также нужно будет тщательно проверить любые пользовательские настройки сборки в целевых объектах, а также заново связать любые библиотеки, которые вы включаете. Также убедитесь, что вы удалили все массово импортированные файлы .plist из целевой ссылки.

Извините, если это не тот ответ, на который вы надеялись.

7 голосов
/ 12 марта 2011

У меня была такая же проблема в финальной версии XCode 4 сегодня, когда я работал со своим старым проектом XCode 3.Проблема связана с индексом символов, который создает XCode.Он должен автоматически создать новый индекс для вас, но в XCode 4 он занимает много времени. Одно из возможных решений - перейти в ~ / Library / Developer / Xcode / DerivedData и удалить старый индекс.Перезапустите XCode, и вы увидите его индексирование.Для «Перейти к определению» вы можете удерживать команду и мышь над именем метода или класса, и вы должны увидеть синие подчеркивания, такие как гиперссылки.Затем вы можете нажать на нее, чтобы перейти к определению.

4 голосов
/ 15 мая 2011

http://three20.info/article/2011-03-10-Xcode4-Support работал на меня. Специально стирая директорию Build of Three20. Странно, но это работало даже тогда, когда упомянутая сборка была сделана в xcode4. CodeSense начал работать с того момента, как я удалил директорию сборки Three20, мне даже не пришлось перекомпилировать или перезагружать проект.

2 голосов
/ 05 ноября 2011

Я исправил проблему, удалив производные данные в Органайзере, запустив touch MyProject.xcodeproj/project.pbxproj и заново открыв проект. После повторного открытия он начал индексирование, а затем снова работал.

2 голосов
/ 11 августа 2011

Это только сработало для меня:

  • Откройте ваш проект Xcode.
  • Откройте командную строку в каталоге вашего проекта и введите:

    touch MyProject.xcodeproj/project.pbxproj

  • Наблюдайте, как раскраска синтаксиса и другие вещи исправляются на ваших глазах.

  • Повторно откройте ваш проект (или измените настройку проекта), если схемы вашего проекта будут сброшены на «Мой Mac» для проектов iOS.
1 голос
/ 12 марта 2012

Добавил это как комментарий и в нескольких местах, так что, возможно, Google сок поможет настроить программисты и запустить их снова ... но в любом случае, я обнаружил, если вы просто используете команду touch в файле YourAppName-Prefix.pchон получит подсветку синтаксиса / раскраску и завершение кода / переход обратно без необходимости удалять все ваши производные данные или перезапускать Xcode.Я сделал это псевдонимом в моем файле .bashrc.

alias pch_touch='touch /path/to/your/apps/Prefix.pch'

. ~/.bashrc

В течение примерно 1-2 секунд после прикосновения к файлу pch происходит окрашивание синтаксисаобратно, что означает завершение кода / прыжок теперь будет работать.В некотором роде такой мощный инструмент, который в остальном удивителен, связан с некоторыми ошибками метаданных / состояния, но все.По крайней мере, это заставляет вас снова заработать и перестать тратить время.

1 голос
/ 31 мая 2011

В моей настройке XCode 4 это на 100% воспроизводимо, что установка пути поиска заголовка пользователя нарушит смысл кода, особенно «Перейти к определению», после перезапуска.Я создал новый проект, добавил свою вспомогательную библиотеку в качестве подпроекта.Если я включу заголовки в Путь поиска заголовка пользователя (рекурсивный), я смогу скомпилировать, но автозаполнение / навигация нарушены.

Удаление пути поиска заголовка, закрытие проекта и повторное открытие исправляет его снова.

1 голос
/ 18 апреля 2011

В нашем случае виновником оказалась старая версия трех 20 библиотек. Чтобы проект заработал, мне нужно было:

  1. Удалить все ссылки на three20 из проекта
  2. Следуйте инструкциям на http://three20.info/article/2011-03-10-Xcode4-Support

Как только новая библиотека была установлена, xcode4 автоматически переиндексируется. Завершение кода, переход к определению и даже рефакторинг - теперь все работает. Радость от работы с Xcode возвращается! :)

В более общем плане любая библиотека, которая помещает свои заголовочные файлы в BUILT_PRODUCT_DIR, может иметь аналогичные проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...