Переименование класса в Xcode: рефакторинг ... неактивен (отключен). Зачем?



Почему рефакторинг... серый (отключен) в Xcode?



Я хотел бы переименовать класс.

574   10  

10 ответов:

Выберите символ класса в его заголовочном файле - т. е. бит сразу после @interface. Тогда рефакторинг должен быть включен.

Если вы используете Objective-C++ (т. е. смешиваете Objective-C с кодом C++), то рефакторинг отключен в xcode, поскольку он не поддерживает рефакторинг кода C++.

рефакторинг также может быть отключен, если затронутые файлы (скорее всего, файл с вашим классом в нем) не сохраняются.

Я использую Xcode уже 5 лет, и рефакторинг никогда не работал правильно (даже xcode 4.6 имеет серьезные ошибки, где он повредит ваш исходный код!).

обходной путь всегда был (все еще работает на 100%, даже в тех случаях, когда код Apple терпит неудачу)

  1. используйте shift-command-f, чтобы найти все варианты использования файла
  2. выберите "заменить" в настройках поиска
  3. "заменить все"
  4. выполните следующие действия для .H файл, и повторите его ДЛЯ.M файл (если у вас есть один):
    1. щелкните правой кнопкой мыши исходный файл и выберите "Показать в finder"
    2. удалить файл из xcode (выберите "удалить только ссылки" при запросе)
  5. переименовать .ч (а .m Если у вас есть один) в Finder
  6. в Xcode выберите "продукт - > (удерживайте нажатой клавишу Alt) - > очистить папку сборки"
  7. выйти из xcode (вы обычно можете уйти, не делая этого - но обратите внимание: есть некоторые другие основные ошибки в Xcode, где он падает сам, если вы этого не сделаете)
  8. повторно открыть xcode
  9. перетащить/падение .h и .m обратно в Xcode
  10. подождите несколько секунд (некоторые из основных методов Xcode являются асинхронными-что позволяет ему повредить ваш проект)
  11. наконец, когда кажется, что он ничего не делает (и ваш жесткий диск больше не шумит): cmd-b для повторной сборки

У меня есть 100% успеха с помощью этого метода. Я просто пытался рефакторинг с "рефакторинг компании Apple - >Переименовать" в последнем xcode и это не удалось-снова!

(на этот раз с неправильной ошибкой: "не удалось определить язык", одно из тех сообщений об ошибке, где Apple поставила неправильный текст на место)

Я собираюсь в свой проект в finder, а затем изменить имя файла на информация.

после этого, в xcode - > навигатор проекта удалить файлы.

в конце, я нажимаю прямо на класс и добавить файлы ... и снова добавить эти файлы.

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

для меня я понял, что Рефактор был отключен, потому что проект Xcode, который я открыл, ссылался на базовый SDK, который отсутствовал. Измените настройки проекта и на вкладке "сборка" установите базовый SDK на тот, который у вас есть (например, для меня это была iOS 4.2). Это позволило рефакторинг для меня.

перейдите в файле заголовка класса и найдите строку, которая выглядит примерно так:

@interface YourClassName

щелкните правой кнопкой мыши на символе класса (например, YourClassName), и вы должны быть в состоянии выбрать рефакторинг -> переименовать...

Я только что попробовал это, и это работает в Xcode 5.

кроме того, может случиться так, что вы переименовали имя файла для класса, либо вне xcode, либо нажав ctrl на имя файла, а затем переименовав его. xcode отказывается от рефакторинга, если имя файла не совпадает с именем класса.

была эта проблема, а также. Я пробежал, пытаясь найти отсутствующие SDK, сохранение файлов и поиск кода Objective-C++, Как упоминалось выше, и все, что потребовалось для исправления моей машины, - это перезагрузка XCode.

кажется немного глючит до сих пор.

кстати, это было для XCode 4.0.1

рефакторинг работает, если вы сначала измените имя файла в навигаторе проекта.

Comments

    Ничего не найдено.