Declaré una enumeración en mi archivo de implementación como se muestra a continuación, y declaró una variable de ese tipo en mi interfaz como PlayerState thePlayerState; y usé la variable en mis métodos. Pero recibo errores que indican que no está declarado. ¿Cómo declaro y uso correctamente una variable de tipo PlayerState en mis métodos ?:
En el archivo .m
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
en el archivo .h:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
en algún método en el archivo .m:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
fuente
fuente
Respuestas:
Sus
typedef
necesidades para estar en el archivo de cabecera (o algún otro archivo que se#import
ed en su cabecera), porque de lo contrario el compilador no sabrá qué tamaño para hacer elPlayerState
Ivar. Aparte de eso, me parece bien.fuente
NS_ENUM
Objective-C si desea que su enumeración esté disponible en código Swift.typedef
declarado en el.m
archivo y se compila y funciona bien.Apple proporciona una macro para ayudar a proporcionar una mejor compatibilidad de código, incluido Swift. Usar la macro se ve así.
Documentado aquí
fuente
NS_ENUM
), ya que es más moderna y ahora se requiere en Objective-C si desea que su enumeración esté disponible en el código Swift.En el .h:
fuente
Con los proyectos actuales es posible que desee utilizar las macros
NS_ENUM()
oNS_OPTIONS()
.fuente
NS_ENUM
Objective-C si desea que su enumeración esté disponible en el código Swift.Así es como Apple lo hace para clases como NSString:
En el archivo de encabezado:
Consulte las Pautas de codificación en http://developer.apple.com/
fuente
Recomiendo usar NS_OPTIONS o NS_ENUM. Puede leer más sobre esto aquí: http://nshipster.com/ns_enum-ns_options/
Aquí hay un ejemplo de mi propio código usando NS_OPTIONS, tengo una utilidad que establece una subcapa (CALayer) en una capa de UIView para crear un borde.
El h. expediente:
El archivo .m:
fuente