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 ]

0 голосов
/ 20 февраля 2013

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

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

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

0 голосов
/ 22 августа 2012

У меня была точно такая же проблема. У меня есть проект с кучей ViewController, которые расширяют класс, который я называю 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 версия 4.4.1 (4F1003)

0 голосов
/ 15 октября 2011

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

   cmake -G Xcode . 

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

0 голосов
/ 11 апреля 2011

Что касается «Перейти к определению», попробуйте нажать на кнопку выбора схемы (ту, которая находится в верхнем правом углу окна со списком сборок, устройств и симуляторов), затем нажмите обратно в редакторе кода и попробуйте Ctrl + клик или «Перейти к определению» снова.

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

0 голосов
/ 30 марта 2011

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

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