iphone xcode refactoring

iphone - Cambie el nombre de una clase en Xcode: Refactor... está en gris(desactivado). ¿Por qué?



refactoring (10)

Además, podría suceder que cambie el nombre del nombre de archivo para la clase, ya sea fuera de xcode o haciendo clic en el nombre del archivo y luego cambiarle el nombre. xcode se niega a refactorizar si el nombre del archivo no coincide con el nombre de la clase.

¿Por qué Refactor ... está atenuado (desactivado) en Xcode?

Me gustaría cambiar el nombre de una clase.


He estado usando Xcode durante 5 años, y la refactorización nunca funcionó correctamente (¡incluso xcode 4.6 tiene errores importantes en los que CORRERÍA el código fuente!).

La solución siempre ha sido (todavía funciona al 100%, incluso en los casos en que falla el código de Apple)

  1. use shift-command-f para encontrar todos los usos del archivo
  2. seleccione "reemplazar" en la configuración de búsqueda
  3. "reemplaza todo"
  4. haga lo siguiente para el archivo .h, y REPETIRLO PARA EL ARCHIVO .m (si tiene uno):
    1. haga clic derecho en el archivo original y seleccione "mostrar en el buscador"
    2. borre el archivo de xcode (seleccione "eliminar solo referencias" cuando se le solicite)
  5. cambie el nombre de .h (y .m si tiene uno) en Finder
  6. en Xcode, seleccione "Producto -> (mantenga presionada la tecla Alt) -> Limpiar carpeta de compilación"
  7. salga de xcode (generalmente puede salirse con la suya sin hacerlo, pero NOTA: hay otros errores importantes en Xcode donde se bloquea si no lo hace)
  8. volver a abrir xcode
  9. arrastre / suelte el .h y el .m nuevamente en Xcode
  10. espere unos segundos (algunos de los métodos principales de Xcode son asíncronos, lo que le permite corromper su proyecto)
  11. finalmente, cuando parece que no está haciendo nada (y su disco duro ya no está haciendo ruido): cmd-b para volver a construir

Tengo una tasa de éxito del 100% con este método. Acabo de tratar de refactorizar con "Refactor -> Renombrar" de Apple en el último xcode y falló - ¡otra vez!

(esta vez con el error incorrecto: "No se puede determinar el idioma de", uno de esos mensajes de error donde Apple puso el texto incorrecto en su lugar)


Para mí, me di cuenta de que Refactor estaba desactivado porque el proyecto de Xcode que había abierto estaba haciendo referencia a un SDK base que faltaba. Edite la configuración del proyecto y, en la pestaña Generar, establezca el SDK base en uno que tenga (como para mí, esto era iOS 4.2). Esto habilitó Refactor para mí.


Refactor también podría estar deshabilitado si los archivos afectados (muy probablemente el archivo con su clase) no se guardan.


Refactorización funciona Si primero cambia el nombre del archivo en el navegador del proyecto.


Si está utilizando Objective-C ++ (es decir, mezcla Objective-C con código C ++), la refactorización está deshabilitada en xcode ya que no admite la refactorización del código C ++.


Tenía este problema también. Me encontré tratando de encontrar los SDK faltantes, guardar archivos y buscar el código Objective-C ++ como se mencionó anteriormente, y todo lo que necesité para reparar mi máquina fue reiniciar XCode.

Parece un poco con errores todavía.

Por cierto, esto fue para XCode 4.0.1


Vaya al archivo de encabezado de su clase y busque la línea que se parece a esto:

@interface YourClassName

Haga clic derecho en el símbolo de la clase (por ejemplo, YourClassName) y debería poder seleccionar Refactor -> Cambiar nombre ...

Lo intenté y funciona en Xcode 5.


Voy a mi proyecto en el buscador, luego cambio el nombre de los archivos al obtener información .

Después de eso, en xcode -> Project Navigator elimino los archivos.

Al final, hago clic derecho en la clase y Agregar archivos a ... y vuelvo a agregar estos archivos.

Funcionó para mí


Seleccione el símbolo de la clase en su archivo de encabezado, es decir, el bit justo después de @interface . Luego, las cosas de refactorización deberían estar habilitadas.