Подтвердить что ты не робот

Xcode 4: автозаполнение и переход к определению, нарушенному в моем проекте Xcode 3

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

  • "Перейти к определению" больше не работает с моими собственными символами (однако символы UI * и даже TT * работают нормально!)
  • Автозаполнение/ "Смысл кода" хуже, чем Xcode 3, т.е. он предлагает все
  • Классы моих проектов не отображаются в навигаторе классов (опять же появляются системные и три20 классы!)

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

Что я пробовал:

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

Обновление

  • Эта ошибка не была решена в Xcode 4.0.1.
4b9b3361

Ответ 1

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

Как только новая библиотека была установлена, xcode4 автоматически переиндексируется. Завершение кода, переход к определению и даже Refactor все работают сейчас. Радость (tm) работы с Xcode вернулась!:)

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

Ответ 2

В окне Окно:

  • Организатор
  • вкладка "Проекты"
  • Ваш проект
  • Удалить производные данные
  • Перезапустить Xcode

Маленький отзыв от другого ответа:

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

Ответ 3

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

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

затем

Нажмите "Удалить исходные данные" (это то же самое, что и переход к папке и ее удаление вручную)

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

Ответ 4

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

Ответ 5

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

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

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

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

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

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

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

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

Ответ 6

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

Ответ 7

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

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

    touch MyProject.xcodeproj/project.pbxproj

  • Следите за тем, как раскраска синтаксиса и другие вещи исправляются перед вашими глазами.

  • Повторно запустите проект (или отрегулируйте настройку проекта), если ваши схемы проекта получают reset в "Мой Mac" для проектов iOS.

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

. ~/.bashrc

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

Ответ 11

У меня была такая же проблема. Нет ссылок на определение, смысл кода или подсветка синтаксиса. Удаление полученных данных не сработало, и даже создание нового проекта не имело никакого значения. Хотя это может быть не та же проблема, что у вас есть, очистка настроек сборки (чтобы не было конфликтов между проектами и целями), как сказал Рик, решил это для меня (хотя я до сих пор не знаю, какие настройки были/вызывали проблему).

Ответ 12

Что касается "Jump to Definition", попробуйте нажать кнопку выбора схемы (тот, что находится в правом верхнем углу окна, в котором отображается список сборок, устройств и симуляторов), затем нажмите "назад" в редакторе кода и попробуйте Еще раз нажмите Command или "Перейти к определению".

Недавно я обнаружил, что всякий раз, когда "Перейти к определению" перестает работать, я могу это сделать, и он работает снова на некоторое время. Это не исправление, но было полезным решением.

Ответ 13

Я не знаю, помогает ли это кому-то, но я изменил код моего проекта на С++, когда я переключился на Xcode 4. Я не переключился на Lion, поэтому у меня все еще есть версия 4.02. При создании проекта в Xcode я бы использовал внешний вариант сборки, это не привело к правильному включению HEADER_SEARCH_PATHS в проект. Я обнаружил, что используя:

   cmake -G Xcode . 

для создания проекта xcode, правильно устанавливает эту переменную и позволяет индексировать весь проект.

Ответ 14

У меня была такая же проблема. У меня есть проект с кучей ViewControllers, которые расширяют класс, который я называю BaseViewController. Я добавил следующий код в BaseViewController.h, а синтаксическая раскраска и автозаполнение кода сломались! Даже при повторных удалениях полученных данных проблема все еще была. Я не могу в это поверить!

@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {
        return self;
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResponder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end

Комментируя этот код, я решил свои проблемы! У меня XCode Version 4.4.1 (4F1003)

Ответ 15

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

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

в терминале увеличивает значение указателя и помогает вам отслеживать проблемы. Запустите Console.app и выполните поиск IDEIndexingClang.