Esta pregunta no es un "cómo hago yo" sino un "por qué es esto" con respecto a algunas propiedades de Clase en Objective-C.¿Por qué "expresión no asignable" (UIView.frame.origin)?
entiendo que los dos ejemplos siguientes no están permitidas y dan como resultado un error ("expresión no asignable"):
self.myUIView.frame.origin.x = 50;
self.myUIView.frame.origin = CGPointMake(50,50);
y que la forma correcta de hacer esto es crear un nuevo CGRect, establecer los valores deseados y luego asignarlo:
CGRect rect = self.myUIView.frame;
rect.origin = CGPointMake(50, 50);
self.myUIView.frame = rect;
Me gustaría entender por qué es esto.
CGRect es una estructura que contiene dos estructuras. ¿La restricción tiene que ver con cómo se asignan las estructuras, para evitar una asignación que podría desbordar esa memoria? ¿O es más una convención sobre propiedades públicas y privadas?
Me doy cuenta de que esto parece una pregunta menor/básica, pero creo que es importante aclarar entendimientos turbios/malos de estos tipos fundamentales de cosas.