Ich habe Klasse A mit einem Header, der etwa wie folgt aussieht:Einstellwerte in einer benutzerdefinierten Struktur als Eigenschaft in Objective-C
typedef struct {
int x;
int y;
} Position;
@interface ClassA : NSObject
@property Position currentPosition;
@end
Und ich versuche, von der Eigenschaft einzelne Werte der Position Struktur zuweisen in eine andere Klasse wie folgt:
ClassA * classA = [ClassA new];
classA.currentPosition.x = 10;
, die einen Fehler gibt „Ausdruck ist nicht übertragbar“ und wird nicht kompiliert.
Ich kann es wie folgt festgelegt:
ClassA * classA = [ClassA new];
Position position = {
.x = 1,
.y = 2
};
classA.currentPosition = position;
Und ich kann sogar einzelne „Eigenschaften“ von position
Variable wie folgt ändern:
ClassA * classA = [ClassA new];
Position position = {
.x = 1,
.y = 2
};
// WORKS
position.x = 4;
// DOESN'T WORK
// classA.currentPosition.x = 4;
classA.currentPosition = position;
Warum kann ich keine Werte einzeln sie, wenn sind eine Eigenschaft?
Wenn Sie typedef verwendet haben, müssen Sie in der @ property-Deklaration nicht 'struct' hinzufügen. –
@NicolasMiari - Ich habe es korrigiert, ich habe verschiedene Arten der Erklärung versucht, ich habe nur die falschen Sachen kopiert. – Logan
Siehe auch [Wie erhält man Zuweisungszugriff auf CGRect-Elemente, wenn das CGRect eine Instanz ist?] (Http://stackoverflow.com/q/5860755), obwohl es sich um eine vorab deklarierte Eigenschaft handelt. –