Rename a class in Xcode: Refactor... is grayed out (disabled). Why?
Solution 1:
Select the class's symbol in its header file - i.e. the bit just after @interface
. Then the refactoring stuff should be enabled.
Solution 2:
If you are using Objective-C++ (i.e. mix Objective-C with C++ code) then refactoring is disabled in xcode since it does not support refactoring of C++ code.
Solution 3:
Refactor might also be disabled if affected files (most likely the file with your class in it) are not saved.
Solution 4:
I've been using Xcode for 5 years now, and refactoring has never worked correctly (even xcode 4.6 has major bugs where it WILL corrupt your source code!).
The workaround has always been (still works 100%, even in cases where Apple's code fails)
- use shift-command-f to find all uses of the file
- select "replace" in the search settings
- "replace-all"
- do the following for the .h file, and REPEAT IT FOR THE .m FILE (if you have one):
- right click the original file, and select "show in finder"
- delete the file from xcode (select "delete references only" when asked)
- rename the .h (and .m if you have one) in Finder
- in Xcode, select "Product -> (hold down Alt) -> Clean Build Folder"
- quit xcode (you can usually get away with not doing this - but NOTE: there are some other MAJOR bugs in Xcode where it crashes itself if you don't do this)
- re-open xcode
- drag/drop the .h and .m back into Xcode
- wait a few seconds (some of Xcode's core methods are asynchronous - allowing it to corrupt your project)
- finally, when it seems to be doing nothing (and your hard disk isn't making any noise any more): cmd-b to re-build
I have a 100% success rate with this method. I just tried refactoring with Apple's "Refactor -> Rename" in latest xcode and it failed - again!
(this time with the incorrect error: "Unable to determine the language of", one of those error messages where Apple put the wrong text in place)
Solution 5:
I'm going to my project at finder, then change files name by get info.
After that, at xcode -> Project Navigator I delete the files.
At end, I click right on the class and Add files to ..., and add these files again.
It worked for me.