Я ветеран .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 в целом). Если бы кто-нибудь мог пролить свет на это, я был бы очень признателен.