Używanie typów wyliczeniowych jako właściwości w Celu C

Jestem doświadczonym programistą .NET, który pierwszy raz wkroczył do programowania w Celu. Mam problem z właściwością typu wyliczeniowego. Jakiś kontekst ... Mam nagłówek klasy i wyliczenie w następujący sposób:

typedef enum  {
    Open,
    Unavailable,
    Unknown
} LocationStatus;

@interface Location : NSObject {

    LocationStatus status;
}

@property (nonatomic) LocationStatus status;

@end

i implementacja, która wygląda tak:

@implementation Location

@synthesize status;

@end

W pewnym momencie kodu ustawiam następującą wartość:

location1.status = Open;

Następnie debuger ocenia to jako mające poprawną wartość i rozstrzyga się na poprawne wyliczenie (zwróć również uwagę na to, że nie ma tutaj innych właściwości ... one również poprawnie się oceniają).

Później w kodzie próbuję przeczytać tę właściwość w ten sposób:

LocationStatus status = location.status;

W tym momencie kodu debugger jest w stanie poprawnie ocenić wszystkie właściwości mojej klasy, z wyjątkiemStatus, który pokazuje adres pamięci, ale nie rzeczywistą wartość. Gdy wykonanie osiągnie tę linię, konsekwentnie otrzymuję błąd EXC_BAD_ACCESS w konsoli, a aplikacja ulega awarii.

Jestem pewien, że odzwierciedla to fundamentalne nieporozumienie z mojej strony na temat używania właściwości i wyrażeń w Objective C (i prawdopodobnie C ogólnie). Gdyby ktoś mógł rzucić na to trochę światła, byłbym bardzo wdzięczny.

questionAnswers(2)

yourAnswerToTheQuestion