Usando tipos de enumeración como propiedades en Objective C
Soy un veterano desarrollador de .NET que realiza mi primera incursión en la programación de Objective C. Estoy teniendo dificultades con una propiedad de un tipo de enumeración. Un poco de contexto ... Tengo un encabezado de clase y una enumeración como esta:
typedef enum {
Open,
Unavailable,
Unknown
} LocationStatus;
@interface Location : NSObject {
LocationStatus status;
}
@property (nonatomic) LocationStatus status;
@end
y una implementación que se ve así:
@implementation Location
@synthesize status;
@end
En algún punto del código, estoy configurando el valor de esta manera:
location1.status = Open;
Luego, el depurador evalúa esto como teniendo el valor correcto, y se está resolviendo a la enumeración correcta (tenga en cuenta que hay otras propiedades que no se muestran aquí ... también se evalúan adecuadamente).
Más adelante en el código, intento leer esa propiedad así:
LocationStatus status = location.status;
En este punto del código, el depurador puede evaluar todas las propiedades de mi clase correctamente, exceptoStatus
, que muestra una dirección de memoria, pero no un valor real. Cuando la ejecución llega a esta línea, recibo constantemente un error EXC_BAD_ACCESS en la consola y la aplicación se bloquea.
Estoy bastante seguro de que esto refleja un malentendido fundamental de mi parte sobre cómo usar propiedades y enumeraciones en Objective C (y probablemente C en general). Si alguien pudiera arrojar algo de luz sobre esto, estaría muy agradecido.