Diese Frage ist kein "Wie mache ich", sondern ein "Warum ist das" bezüglich einiger Klasseneigenschaften in Objective-C.Warum ist "Ausdruck nicht zuweisbar" (UIView.frame.origin)?
Ich verstehe, dass die beiden folgenden Beispiele werden in einem Fehler („Ausdruck nicht übertragbar“) nicht erlaubt und führen:
self.myUIView.frame.origin.x = 50;
self.myUIView.frame.origin = CGPointMake(50,50);
und dass der richtige Weg, dies zu tun, ist eine neue CGRect zu schaffen, stellen sie die gewünschten Werte und dann zuweisen:
CGRect rect = self.myUIView.frame;
rect.origin = CGPointMake(50, 50);
self.myUIView.frame = rect;
ich möchte verstehen, warum dies so ist.
CGRect ist eine Struktur, die zwei Strukturen enthält. Hat die Einschränkung damit zu tun, wie Strukturen zugewiesen werden, um eine Zuweisung zu verhindern, die diesen Speicher überläuft? Oder ist es eher eine Konvention über öffentliche und private Grundstücke?
Ich weiß, das scheint eine kleine/grundlegende Frage zu sein, aber ich denke, es ist wichtig, schlammiges/schlechtes Verständnis dieser grundlegenden Dinge aufzuklären.