À l'aide de types enum comme des propriétés en Objective-C

Je suis un vétéran .NET développeur de faire ma première incursion dans l'Objectif C de la programmation. J'ai de la difficulté avec une propriété d'un type enum. Un certain contexte... j'en ai un en-tête de classe enum comme ceci:

typedef enum  {
    Open,
    Unavailable,
    Unknown
} LocationStatus;

@interface Location : NSObject {

    LocationStatus status;
}

@property (nonatomic) LocationStatus status;

@end

et une mise en œuvre qui ressemble à ceci:

@implementation Location

@synthesize status;

@end

À un certain point dans le code, je suis à la définition de la valeur comme ceci:

location1.status = Open;

Le débogueur évalue alors cette comme ayant de la valeur correcte, et c'est de résoudre la bonne enum (note également qu'il existe d'autres propriétés qui ne sont pas montrés ici... ils ont trop d'évaluer correctement).

Plus tard dans le code, j'ai essayer de lire que la propriété comme cela:

LocationStatus status = location.status;

À ce point dans le code, le débogueur est en mesure d'évaluer toutes les propriétés de ma classe correctement, à l'exception Status, qui présente une adresse de mémoire, mais pas une valeur réelle. Lors de l'exécution atteint cette ligne, j'ai toujours obtenir un EXC_BAD_ACCESS d'erreur dans la console, et l'application se bloque.

Je suis sûr que cela reflète une incompréhension fondamentale de ma part sur la façon d'utiliser les propriétés et les énumérations, en Objective-C (et probablement C en général). Si quelqu'un pouvait éclairer sur ce, je lui en serais très reconnaissant.

OriginalL'auteur | 2009-10-26