Usando tipos de enum como propriedades no Objective C

Sou um desenvolvedor veterano de .NET fazendo minha primeira incursão na programação do Objective C. Estou tendo dificuldades com uma propriedade de um tipo enum. Algum contexto ... Eu tenho um cabeçalho de classe e enum como este:

typedef enum  {
    Open,
    Unavailable,
    Unknown
} LocationStatus;

@interface Location : NSObject {

    LocationStatus status;
}

@property (nonatomic) LocationStatus status;

@end

e uma implementação que se parece com isso:

@implementation Location

@synthesize status;

@end

Em algum momento no código, estou definindo o valor da seguinte forma:

location1.status = Open;

O depurador, em seguida, avalia isso como tendo o valor correto e está resolvendo o enum correto (observe também que há outras propriedades não mostradas aqui ... elas também são avaliadas corretamente).

Mais tarde, no código, tento ler essa propriedade assim:

LocationStatus status = location.status;

Neste ponto do código, o depurador é capaz de avaliar todas as propriedades da minha classe corretamente, excetoStatus, que mostra um endereço de memória, mas não um valor real. Quando a execução atinge essa linha, recebo consistentemente um erro EXC_BAD_ACCESS no console e o aplicativo falha.

Tenho certeza que isso reflete um mal-entendido fundamental da minha parte sobre como usar propriedades e enums no Objective C (e provavelmente C em geral). Se alguém pudesse lançar alguma luz sobre isso, ficaria muito grato.

questionAnswers(2)

yourAnswerToTheQuestion