2008-11-13 10 views
35

¿Xcode es compatible con las directivas de estilo de Visual Studio #region para el plegado de código arbitrario?Xcode regiones

Respuesta

54

No, solo puede doblar el código en varios niveles definidos de alcance en Xcode.

Puede utilizar pequeños trucos para facilitar la navegación a través del menú de funciones.

#pragma mark 

Le permite crear una agrupación donde aparecerá la siguiente marca de etiqueta en el menú de funciones. Si la etiqueta es un guión, se inserta un separador en el menú de funciones.

Además, las siguientes etiquetas en los comentarios se mostrarán en el menú de funciones:

// MARK: 
// TODO: 
// FIXME: 
// !!!: 
// ???: 

Obviamente ya marca #pragma no es realmente portátil, si usted está construyendo una aplicación portátil y necesitan que funcione con un compilador que no solo ignora las directivas #pragma que no comprende, la marca de estilo de comentario es una alternativa decente.

+2

El estándar C dice que una implementación conforme * debe * ignorar las directivas '# pragma' que no comprende. Por supuesto, cada directiva '# pragma' que no comienza con' STDC' está definida por la implementación de todos modos, por lo que aún no es portátil. – dreamlax

+0

Alguien debería definitivamente hacer un plugin de XCode para doblar código personalizado. Eso sería muy útil :) – brimstone

12

voy al infierno por esto, pero aquí va:

En la parte superior de un archivo determinado, poner

#define FOLD 1 

Dondequiera que desea doblar algo, lo envuelve en un bloque if como tal :

if(FOLD) { 
// your code to hide 
// more code 
} 

Eso le permitirá doblarlo fuera de la vista.

+8

Sería una buena idea, pero solo puedes poner una instrucción if dentro de un alcance de función. No puede ajustar las definiciones de estructura, enumeración y función en un if. – Chuck

+48

+1 para ir al infierno – MrJD

+1

Otro +1 para la mayoría de los IDEs que no admiten la directiva de preprocesamiento para el plegado de código, -1 porque creo que esto es porque quieren obligarnos a usar el método en lugar de plegarlo, +1 sería increíble para este agrupación de métodos, -1 porque creo que esto es porque quieren obligarnos a usar clases. Así que estamos parejos: P. Disculpe mi ignorancia, si existe alguna. –

4

Eso no funcionará en el lugar que más desee, es decir, alrededor de grupos de funciones o métodos.

Puede ser útil dentro de un método largo y lineal sin condicionales internos o bucles, pero tales métodos no son comunes en el código general de UI de Mac OS X, aunque si está escribiendo un gran código numérico o de generación de gráficos podría ayudar a agrupar cosas.

Y el if (fold) es completamente superfluo. Simplemente use las llaves dentro de un método o función y Xcode los doblará.

+4

Es sorprendente que tanta gente ignore que puede introducir el alcance sin ramificar. – dreamlax

-3

Una buena solución que acabo de encontrar:

Ponga su proyecto en un gran espacio de nombres. Cerrar y volver a abrir este espacio de nombres para las secciones individuales de su archivo de origen:

namespace myproj { // members of class MyClassA 

void MyClassA::dosomething() 
{ 
} 

void MyClassA::dosomethingelse() 
{ 
} 

} // members of class MyClassA 
namespace myproj { // members of MyClassB 

void MyClassB::dosomething() 
{ 
} 

void MyClassB::dosomethingelse() 
{ 
} 

} // members of MyClassB 
+1

Esa solución, si es viable, solo funcionaría para C++ ya que Objective-C no admite espacios de nombres – HairOfTheDog

+0

Lol ................... – Jamil

0

Deja tus código deseado dentro de los paréntesis {}, y se convertirá en una zona de plegado.

Pero debe tener en cuenta que los corchetes también definen el alcance de las variables, por lo que este código no debe tener declaraciones de variables que se utilizarán fuera de estos corchetes.

3

Trate de esta manera:

//region title1 
{ 
    //region Subtitl1 
    { 

    } 
    //region Subtitl2 
    { 

    } 
} 

Se puede hacer así:

It can do like that :

+0

no, eso realmente no funciona t trabajo – user884248

1

Sin el apoyo para las regiones estilo .Net, pudiendo colapsar todas sus funciones al mismo tiempo es La siguiente mejor cosa. comando

- opción - cambio - Flecha izquierda para contraer todos.

comando - opción - cambio - flecha de la derecha a expandir todo.

Xcode recordará el último estado de las funciones contraídas.

+0

NB: en Xcode 8, para que Xcode recuerde su plegado, asegúrese de que su formato de proyecto esté configurado en 'Xcode 8.0-compatible'. – Cemen

Cuestiones relacionadas