10 ответов:
Выберите символ класса в его заголовочном файле - т. е. бит сразу после
@interface. Тогда рефакторинг должен быть включен.
Если вы используете Objective-C++ (т. е. смешиваете Objective-C с кодом C++), то рефакторинг отключен в xcode, поскольку он не поддерживает рефакторинг кода C++.
рефакторинг также может быть отключен, если затронутые файлы (скорее всего, файл с вашим классом в нем) не сохраняются.
Я использую Xcode уже 5 лет, и рефакторинг никогда не работал правильно (даже xcode 4.6 имеет серьезные ошибки, где он повредит ваш исходный код!).
обходной путь всегда был (все еще работает на 100%, даже в тех случаях, когда код Apple терпит неудачу)
- используйте shift-command-f, чтобы найти все варианты использования файла
- выберите "заменить" в настройках поиска
- "заменить все"
- выполните следующие действия для .H файл, и повторите его ДЛЯ.M файл (если у вас есть один):
- щелкните правой кнопкой мыши исходный файл и выберите "Показать в finder"
- удалить файл из xcode (выберите "удалить только ссылки" при запросе)
- переименовать .ч (а .m Если у вас есть один) в Finder
- в Xcode выберите "продукт - > (удерживайте нажатой клавишу Alt) - > очистить папку сборки"
- выйти из xcode (вы обычно можете уйти, не делая этого - но обратите внимание: есть некоторые другие основные ошибки в Xcode, где он падает сам, если вы этого не сделаете)
- повторно открыть xcode
- перетащить/падение .h и .m обратно в Xcode
- подождите несколько секунд (некоторые из основных методов Xcode являются асинхронными-что позволяет ему повредить ваш проект)
- наконец, когда кажется, что он ничего не делает (и ваш жесткий диск больше не шумит): 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