ich ein Objekt mit einem CGPoint Ivar definiert haben und Eigentum verbunden sind wie folgt ...Mischen C Structs und Objective-C Eigenschaften
@interface Sprite : NSObject {
CGRect boundingBox;
}
@property(assign) CGRect boundingBox;
Wenn ich eine Instanz der Sprite-Klasse verwenden und versuchen, aktualisieren die boundingBox Struktur wie folgt ...
self.boundingBox.origin.x = minX;
ich eine Kompilierung-Fehlermeldung besagt, ...
L-Wert erforderlich, als linker OperandZuordnung
Bin ich sagen richtig, dass self.boundingBox eine C-Struktur zurück, die nicht tatsächlich die Struktur durch das Sprite-Objekt gehalten ist, sondern eine Kopie davon? Wenn die Zuweisung eines neuen Werts für x fehlschlägt, weil die Struktur nur eine temporäre Kopie ist?
Wenn dies der Fall ist, wird der folgende Code korrekt funktionieren (und ist es der richtige Weg, um das zu erreichen, was ich will)?
CGRect newBoundingBox = self.boundingBox;
newBoundingBox.origin.x = self.boundingBox.origin.x;
self.boundingBox = newBoundingBox;
Danke dafür! Es macht alles Sinn, abgesehen von dem, was Sie in Bezug auf nicht in der Lage zu sein, ANY CGRect zu bearbeiten. Was hindert Sie daran?Sind C-Strukturen nicht veränderbar? – mmccomb
Wow, meine Entschuldigung hier - ich habe diesen Kommentar völlig falsch verstanden. Ich habe gerade meine Antwort aktualisiert, um die richtigen Informationen dazu zu enthalten. –
Macht jetzt Sinn :) – mmccomb