Verwenden von Aufzählungstypen als Eigenschaften in Ziel C
Ich bin ein erfahrener .NET-Entwickler, der zum ersten Mal in die Objective C-Programmierung eintaucht. Ich habe Schwierigkeiten mit einer Eigenschaft eines Aufzählungstyps. Irgendein Kontext ... Ich habe eine Klassenüberschrift und eine Aufzählung wie diese:
typedef enum {
Open,
Unavailable,
Unknown
} LocationStatus;
@interface Location : NSObject {
LocationStatus status;
}
@property (nonatomic) LocationStatus status;
@end
und eine Implementierung, die so aussieht:
@implementation Location
@synthesize status;
@end
Irgendwann im Code stelle ich den Wert so ein:
location1.status = Open;
Der Debugger wertet dies dann mit dem richtigen Wert aus, und es wird in die richtige Aufzählung aufgelöst (beachten Sie auch, dass andere Eigenschaften hier nicht angezeigt werden ... sie werden ebenfalls ordnungsgemäß ausgewertet).
Später im Code versuche ich, diese Eigenschaft folgendermaßen zu lesen:
LocationStatus status = location.status;
An dieser Stelle im Code kann der Debugger alle Eigenschaften meiner Klasse korrekt auswerten, außerStatus
, die eine Speicheradresse, aber keinen Istwert anzeigt. Wenn die Ausführung diese Zeile erreicht, wird in der Konsole durchgehend ein EXC_BAD_ACCESS-Fehler angezeigt, und die App stürzt ab.
Ich bin mir ziemlich sicher, dass dies ein grundlegendes Missverständnis meinerseits bezüglich der Verwendung von Eigenschaften und Aufzählungen in Objective C (und wahrscheinlich C im Allgemeinen) widerspiegelt. Wenn jemand Licht ins Dunkel bringen könnte, wäre ich sehr dankbar.