Использование перечислимых типов в качестве свойств в Objective C

Я ветеран .NET-разработчик, делающий мой первый опыт программирования на Objective C. У меня проблемы со свойством типа enum. Некоторый контекст ... У меня есть заголовок класса и перечисление, как это:

typedef enum  {
    Open,
    Unavailable,
    Unknown
} LocationStatus;

@interface Location : NSObject {

    LocationStatus status;
}

@property (nonatomic) LocationStatus status;

@end

и реализация, которая выглядит так:

@implementation Location

@synthesize status;

@end

В некоторый момент в коде я устанавливаю значение следующим образом:

location1.status = Open;

Затем отладчик оценивает это как имеющее правильное значение, и он обращается к правильному перечислению (обратите внимание также, что есть другие свойства, не показанные здесь ... они тоже оцениваются правильно).

Позже в коде я пытаюсь прочитать это свойство следующим образом:

LocationStatus status = location.status;

На данный момент в коде отладчик может правильно оценить все свойства моего класса, кромеStatus, который показывает адрес памяти, но не фактическое значение. Когда выполнение достигает этой строки, я последовательно получаю ошибку EXC_BAD_ACCESS в консоли, и приложение вылетает.

Я почти уверен, что это отражает фундаментальное недоразумение с моей стороны о том, как использовать свойства и перечисления в Objective C (и, вероятно, C в целом). Если бы кто-нибудь мог пролить свет на это, я был бы очень благодарен.

Ответы на вопрос(2)

Ваш ответ на вопрос