2012-04-06 8 views
7

Tengo una DataClass.htipo de datos de enumeración declarada en otra clase en Objective C

@interface DataClass : NSObject 
{ 
} 

enum knownTypes 
{ 
    type1 = 0, 
    type2, 
    type3, 
    UnknownType = -1 
}; 

¿Hay alguna manera de especificar knownTypes en el archivo .m y el acceso de otra clase.

Esta es la clase Util que estoy creando, por lo tanto, no quiero crear un objeto para acceder a los valores de esta clase.

por ejemplo: en TestClass.m, al importar DataClass.h, ahora puedo usar los valores enum como type1, type2 ... pero si declaro los datos enum en DataClass.m, no podría usar esos valores enum .

+0

¿Por qué poner UnknownType en la parte inferior? –

Respuesta

15

Esto no tiene nada que ver con las clases. Esta es una característica de C.

Si define un tipo o una enumeración en un archivo .h, puede usarlo importándolo (#import) donde lo necesite.

Si define su enumeración en un archivo .c o .m, solo los elementos después de esa definición en el archivo pueden usarla.

En su caso, parece que necesita la misma enumeración en dos archivos diferentes. El uso es definir esa enumeración en un archivo separado, por ejemplo, knownTypes.h e importar ese archivo en los dos archivos que lo usan: DataClass.m y TestClass.m.

Si TestClass es para el propósito de prueba, entonces su organización actual está bien: enumeración se declara en DataClass.h y ambos DataClass.m y TestClass.m importación DataClass.h.

1

No, si define enum en el archivo fuente en lugar del encabezado, solo ese archivo fuente podrá utilizar los identificadores utilizados en el enum. Si desea mantenerlo “ privado ” pero utilizable por más de un archivo fuente, colóquelo en un encabezado separado e incluya este encabezado separado en ambos archivos fuente.

+0

Eso es lo que estoy tratando de hacer, Data Class aquí es ese archivo de encabezado separado – Friendtam

Cuestiones relacionadas