Переименуйте класс в Xcode: Refactor... отображается серым цветом (отключено). Зачем?

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

  • используйте команду shift-command-f, чтобы найти все виды использования файла
  • выберите "заменить" в настройках поиска
  • "заменить все"
  • сделайте следующее для файла .h и ПОВТОРИТЕ ЭТО ДЛЯ .m FILE (если у вас есть):
    • щелкните правой кнопкой мыши исходный файл и выберите "show in finder"
    • удалите файл из xcode (выберите "удалить ссылки только" )
  • переименуйте .h(и .m, если он у вас есть) в Finder
  • в Xcode выберите "Продукт → (удерживайте Alt) → Очистить папку сборки"
  • quit xcode (вы обычно можете уйти, не делая этого, но ЗАМЕЧАНИЕ: в Xcode есть некоторые другие БОЛЬШИЕ ошибки, где он сбой сам, если вы этого не сделаете)
  • re-open xcode
  • перетащить .h и .m обратно в Xcode
  • подождите несколько секунд (некоторые из основных методов Xcode являются асинхронными, что позволяет ему испортить ваш проект)
  • наконец, когда он ничего не делает (и ваш жесткий диск больше не шумит): cmd-b для повторной сборки

У меня есть 100% успеха с этим методом. Я просто попробовал рефакторинг с Apple "Refactor → Rename" в последнем xcode, и он не сработал - снова!

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

Ответ 5

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

После этого в xcode → Навигаторе проектов я удаляю файлы.

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

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

Ответ 6

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

Ответ 7

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

@interface YourClassName

Щелкните правой кнопкой мыши на символе класса (например, YourClassName), и вы сможете выбрать Refactor → Rename...

Я просто попробовал это, и он работает в Xcode 5.

Ответ 8

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

Ответ 9

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

Кажется, что еще немного глючит.

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

Ответ 10

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